← 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.