From 8e7811e952b4e0993330f7ac1fb1448a1ca69b9a Mon Sep 17 00:00:00 2001 From: Jeff Davis Date: Fri, 9 Jul 2021 08:48:19 -0700 Subject: [PATCH] Eliminate replication protocol error related to IDENTIFY_SYSTEM. The requirement that IDENTIFY_SYSTEM be run before START_REPLICATION was both undocumented and unnecessary. Remove the error and ensure that ThisTimeLineID is initialized in START_REPLICATION. Elect not to backport because this requirement was expected behavior (even if inconsistently enforced), and is not likely to cause any major problem. Author: Jeff Davis Reviewed-by: Andres Freund Discussion: https://postgr.es/m/de4bbf05b7cd94227841c433ea6ff71d2130c713.camel%40j-davis.com --- src/backend/replication/walsender.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 92c755f346..3ca2a11389 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -573,11 +573,6 @@ StartReplication(StartReplicationCmd *cmd) StringInfoData buf; XLogRecPtr FlushPtr; - if (ThisTimeLineID == 0) - ereport(ERROR, - (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), - errmsg("IDENTIFY_SYSTEM has not been run before START_REPLICATION"))); - /* create xlogreader for physical replication */ xlogreader = XLogReaderAllocate(wal_segment_size, NULL, @@ -619,6 +614,7 @@ StartReplication(StartReplicationCmd *cmd) * that. Otherwise use the timeline of the last replayed record, which is * kept in ThisTimeLineID. */ + am_cascading_walsender = RecoveryInProgress(); if (am_cascading_walsender) { /* this also updates ThisTimeLineID */