v8_amit_1.txt
text/plain
Filename: v8_amit_1.txt
Type: text/plain
Part: 0
diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c
index 0bbc96bcee5..c93b6eb1798 100644
--- a/src/backend/replication/logical/origin.c
+++ b/src/backend/replication/logical/origin.c
@@ -1169,6 +1169,15 @@ replorigin_session_setup(RepOriginId node, int acquired_by)
curstate->roident, curstate->acquired_by)));
}
+ else if (curstate->acquired_by != 0 &&
+ curstate->acquired_by != acquired_by)
+ {
+ ereport(ERROR,
+ (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("could not find replication state slot for replication origin with OID %u which was acquired by %d",
+ node, acquired_by)));
+ }
+
/* ok, found slot */
candidate_state = curstate;
break;
@@ -1196,14 +1205,8 @@ replorigin_session_setup(RepOriginId node, int acquired_by)
if (acquired_by == 0)
candidate_state->acquired_by = MyProcPid;
- else if (candidate_state->acquired_by != acquired_by)
- {
- if (initialized)
- candidate_state->roident = InvalidRepOriginId;
-
- elog(ERROR, "could not find replication state slot for replication origin with OID %u which was acquired by %d",
- node, acquired_by);
- }
+ else
+ Assert(candidate_state->acquired_by == acquired_by);
/* Candidate slot looks ok, use it */
session_replication_state = candidate_state;