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;