Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbc76695

Browse files
Make a hard state change from catchup to streaming mode.
More useful state change for monitoring purposes, plus arequired change for synchronous replication patch.
1 parent06828c5 commitbc76695

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

‎src/backend/replication/walsender.c

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,16 @@ StartReplication(StartReplicationCmd * cmd)
369369
(errcode(ERRCODE_CANNOT_CONNECT_NOW),
370370
errmsg("standby connections not allowed because wal_level=minimal")));
371371

372+
/*
373+
* When we first start replication the standby will be behind the primary.
374+
* For some applications, for example, synchronous replication, it is
375+
* important to have a clear state for this initial catchup mode, so we
376+
* can trigger actions when we change streaming state later. We may stay
377+
* in this state for a long time, which is exactly why we want to be
378+
* able to monitor whether or not we are still here.
379+
*/
380+
WalSndSetState(WALSNDSTATE_CATCHUP);
381+
372382
/* Send a CopyBothResponse message, and start streaming */
373383
pq_beginmessage(&buf,'W');
374384
pq_sendbyte(&buf,0);
@@ -752,8 +762,17 @@ WalSndLoop(void)
752762
break;
753763
}
754764

755-
/* Update our state to indicate if we're behind or not */
756-
WalSndSetState(caughtup ?WALSNDSTATE_STREAMING :WALSNDSTATE_CATCHUP);
765+
/*
766+
* If we're in catchup state, see if its time to move to streaming.
767+
* This is an important state change for users, since before this
768+
* point data loss might occur if the primary dies and we need to
769+
* failover to the standby. The state change is also important for
770+
* synchronous replication, since commits that started to wait at
771+
* that point might wait for some time.
772+
*/
773+
if (MyWalSnd->state==WALSNDSTATE_CATCHUP&&caughtup)
774+
WalSndSetState(WALSNDSTATE_STREAMING);
775+
757776
ProcessRepliesIfAny();
758777
}
759778

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp