Remove checks for empty entries in WAL key file

Sincw we never delete WAL keys this logic only confuses the reader of
the code. Plus we can optimize the insertion of a new WAL key by using
seek().
pull/238/head
Andreas Karlsson 1 month ago committed by Andreas Karlsson
parent 1a20e9bb45
commit d7b42c1fde
  1. 32
      contrib/pg_tde/src/access/pg_tde_xlog_keys.c

@ -538,28 +538,8 @@ pg_tde_write_wal_key_file_entry(const WalEncryptionKey *rel_key_data,
/* Open and validate file for basic correctness. */ /* Open and validate file for basic correctness. */
fd = pg_tde_open_wal_key_file_write(get_wal_key_file_path(), &signed_key_Info, false, &curr_pos); fd = pg_tde_open_wal_key_file_write(get_wal_key_file_path(), &signed_key_Info, false, &curr_pos);
/* /* WAL keys are always added at the end of the file */
* Read until we find an empty slot. Otherwise, read until end. This seems curr_pos = lseek(fd, 0, SEEK_END);
* to be less frequent than vacuum. So let's keep this function here
* rather than overloading the vacuum process.
*/
while (1)
{
WalKeyFileEntry read_entry;
off_t prev_pos = curr_pos;
if (!pg_tde_read_one_wal_key_file_entry(fd, &read_entry, &curr_pos))
{
curr_pos = prev_pos;
break;
}
if (read_entry.type == MAP_ENTRY_EMPTY)
{
curr_pos = prev_pos;
break;
}
}
/* Initialize WAL key file entry and encrypt key */ /* Initialize WAL key file entry and encrypt key */
pg_tde_initialize_wal_key_file_entry(&write_entry, principal_key, rel_key_data); pg_tde_initialize_wal_key_file_entry(&write_entry, principal_key, rel_key_data);
@ -674,9 +654,6 @@ pg_tde_perform_rotate_server_key(TDEPrincipalKey *principal_key,
if (!pg_tde_read_one_wal_key_file_entry(old_fd, &read_map_entry, &old_curr_pos)) if (!pg_tde_read_one_wal_key_file_entry(old_fd, &read_map_entry, &old_curr_pos))
break; break;
if (read_map_entry.type == MAP_ENTRY_EMPTY)
continue;
/* Decrypt and re-encrypt key */ /* Decrypt and re-encrypt key */
key = pg_tde_decrypt_wal_key(principal_key, &read_map_entry); key = pg_tde_decrypt_wal_key(principal_key, &read_map_entry);
pg_tde_initialize_wal_key_file_entry(&write_map_entry, new_principal_key, key); pg_tde_initialize_wal_key_file_entry(&write_map_entry, new_principal_key, key);
@ -829,10 +806,7 @@ pg_tde_count_wal_keys_in_file(void)
return count; return count;
while (pg_tde_read_one_wal_key_file_entry(fd, &entry, &curr_pos)) while (pg_tde_read_one_wal_key_file_entry(fd, &entry, &curr_pos))
{ count++;
if (entry.type != MAP_ENTRY_EMPTY)
count++;
}
CloseTransientFile(fd); CloseTransientFile(fd);

Loading…
Cancel
Save