From 63a769cb1c9eb06a953c3c2e8ff2e570c26c389f Mon Sep 17 00:00:00 2001 From: Shveta Malik Date: Mon, 8 Sep 2025 15:49:02 +0530 Subject: [PATCH v1] Add NULL check for apply worker in update-deleted Add NULL check for leader apply worker in the update-deleted detection flow to prevent SIGSEGV when the tablesync worker is applying changes and attempting to locate a deleted row. --- src/backend/replication/logical/worker.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c index c0f6bef5c28..e30b278109a 100644 --- a/src/backend/replication/logical/worker.c +++ b/src/backend/replication/logical/worker.c @@ -3272,6 +3272,12 @@ FindDeletedTupleInLocalRel(Relation localrel, Oid localidxoid, LWLockAcquire(LogicalRepWorkerLock, LW_SHARED); leader = logicalrep_worker_find(MyLogicalRepWorker->subid, InvalidOid, false); + if (!leader) + { + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("could not detect conflict as the leader apply worker has exited"))); + } SpinLockAcquire(&leader->relmutex); oldestxmin = leader->oldest_nonremovable_xid; -- 2.34.1