From 63a769cb1c9eb06a953c3c2e8ff2e570c26c389f Mon Sep 17 00:00:00 2001
From: Shveta Malik <shveta.malik@gmail.com>
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

