From 4be607984333427111af1bb289d7762ba4082537 Mon Sep 17 00:00:00 2001 From: Ajin Cherian Date: Fri, 20 Jun 2025 03:37:40 -0400 Subject: [PATCH] Fix stale snapshot issue Make sure logical replication does not use snapshots that are built prior to becoming consistent to avoid stale snapshots causing catalog lookup errors. --- src/backend/replication/logical/snapbuild.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c index adf18c3..642c986 100644 --- a/src/backend/replication/logical/snapbuild.c +++ b/src/backend/replication/logical/snapbuild.c @@ -677,6 +677,19 @@ SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn) builder->snapshot); } + /* + * Forget snapshots built before the SNAPBUILD_CONSISTENT state, + * so that we rebuild them when we become consistent. + */ + if (builder->state == SNAPBUILD_FULL_SNAPSHOT) + { + if (builder->snapshot) + { + SnapBuildSnapDecRefcount(builder->snapshot); + builder->snapshot = NULL; + } + } + return true; } -- 1.8.3.1