← Back to team overview

maria-developers team mailing list archive

Re: Page encryption exception handling.

 

Hi, Clemens!

On Oct 13, Clemens Dörrhöfer wrote:
> Hi Sergei,
> 
> I included an error, which was triggered by a missing key in the
> keyfile. The server will see a wrong space ID, since it has not been
> decrypted, which from my point of view is the reason for mariadb to
> crash.
> Basically we run into a problem when trying to decrypt a page using
> fil_decrypt_page theoretically we can catch this exception much
> sooner, since all we need to know is the key id we need for decryption
> / encryption and throw an exception as soon as we know that we cannot
> handle a key in best case before we trigger any aio. 
> 
> 	fil_decrypt_page() at fil0pageencryption.cc:391 0x555555feeb91	
> 	os_file_read_func() at os0file.cc:3.156 0x555555e22648	
> 	pfs_os_file_read_func() at os0file.ic:288 0x555555fdb4fa	
> 	fil_read_first_page() at fil0fil.cc:2.156 0x555555fe1eb0	
> 	fil_validate_single_table_tablespace() at fil0fil.cc:4.303 0x555555fe5fd0	
> 	fil_load_single_table_tablespace() at fil0fil.cc:4.443 0x555555fe64af	
> 	fil_load_single_table_tablespaces() at fil0fil.cc:4.806 0x555555fe6d1a	
> 	recv_init_crash_recovery() at log0recv.cc:3.046 0x555555e14447	
> 	recv_recovery_from_checkpoint_start_func() at log0recv.cc:3.360 0x555555e14c69	
> 	innobase_start_or_create_for_mysql() at srv0start.cc:2.471 0x555555eeea65	

This still doesn't show where it crashes, only where you detect the
missing key.

But anyway, I agree, if you can detect a missing key sooner, you'd
better do that, instead of returning invalid page to XtraDB, because it
used to crash the server in case of severe errors like that.

Regards,
Sergei


References