diff --git a/src/backend/replication/logical/logicalctl.c b/src/backend/replication/logical/logicalctl.c index 14cae7f5cd9..8bdb718812f 100644 --- a/src/backend/replication/logical/logicalctl.c +++ b/src/backend/replication/logical/logicalctl.c @@ -304,8 +304,10 @@ EnsureLogicalDecodingEnabled(void) * UpdateLogicalDecodingStatusEndOfRecovery() upon promotion. We * cannot enable logical decoding during recovery, so raise an error. * - * Our already-visible slot guarantees that this check doesn't miss a - * concurrent deactivation: UpdateLogicalDecodingStatusEndOfRecovery() + * Our slot is already visible in shared memory (its in_use flag is + * set, so a concurrent deactivation's slot invalidation can find it), + * which guarantees that this check doesn't miss a concurrent + * deactivation: UpdateLogicalDecodingStatusEndOfRecovery() * won't disable logical decoding as it sees our valid slot, and * replaying a status change record after this check invalidates our * slot, so this slot creation fails afterwards anyway (by a recovery