• Jan Lindström's avatar
    MDEV-8173: InnoDB; Failing assertion: crypt_data->type == 1 · 3e55ef26
    Jan Lindström authored
    Make sure that when we publish the crypt_data we access the
    memory cache of the tablespace crypt_data. Make sure that
    crypt_data is stored whenever it is really needed.
    
    All this is not yet enough in my opinion because:
    
    sql/encryption.cc has DBUG_ASSERT(scheme->type == 1) i.e.
    crypt_data->type == CRYPT_SCHEME_1
    
    However, for InnoDB point of view we have global crypt_data
    for every tablespace. When we change variables on crypt_data
    we take mutex. However, when we use crypt_data for
    encryption/decryption we use pointer to this global
    structure and no mutex to protect against changes on
    crypt_data.
    
    Tablespace encryption starts in fil_crypt_start_encrypting_space
    from crypt_data that has crypt_data->type = CRYPT_SCHEME_UNENCRYPTED
    and later we write page 0 CRYPT_SCHEME_1 and finally whe publish
    that to memory cache.
    3e55ef26
buf0buf.cc 161 KB