]> granicus.if.org Git - postgresql/commitdiff
Zero padding in replication origin's checkpointed on disk-state.
authorAndres Freund <andres@anarazel.de>
Sun, 23 Apr 2017 22:48:31 +0000 (15:48 -0700)
committerAndres Freund <andres@anarazel.de>
Sun, 23 Apr 2017 22:54:41 +0000 (15:54 -0700)
This seems to be largely cosmetic, avoiding valgrind bleats and the
like. The uninitialized padding influences the CRC of the on-disk
entry, but because it's also used when verifying the CRC, that doesn't
cause spurious failures.  Backpatch nonetheless.

It's a bit unfortunate that contrib/test_decoding/sql/replorigin.sql
doesn't exercise the checkpoint path, but checkpoints are fairly
expensive on weaker machines, and we'd have to stop/start for that to
be meaningful.

Author: Andres Freund
Discussion: https://postgr.es/m/20170422183123.w2jgiuxtts7qrqaq@alap3.anarazel.de
Backpatch: 9.5, where replication origins were introduced

src/backend/replication/logical/origin.c

index 5eaf863e02c03abeeaf880a527bc4ff0a69ea6f0..c17f8ad277161acd9d177b4d055addbd37f58172 100644 (file)
@@ -559,6 +559,9 @@ CheckPointReplicationOrigin(void)
                if (curstate->roident == InvalidRepOriginId)
                        continue;
 
+               /* zero, to avoid uninitialized padding bytes */
+               memset(&disk_state, 0, sizeof(disk_state));
+
                LWLockAcquire(&curstate->lock, LW_SHARED);
 
                disk_state.roident = curstate->roident;