summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2025-11-04 12:57:36 +0900
committerMichael Paquier <michael@paquier.xyz>2025-11-04 12:57:36 +0900
commite0ca61e7c4d55c34d67a3cc6fa0bdea2f41d2cf2 (patch)
tree288580385b939c818993f17c0c9f4654f8bdaa0f /src/backend
parent17b2d5ec759c0d26b29def7e57f51d0515ddca1f (diff)
Add WalRcvGetState() to retrieve the state of a WAL receiver
This has come up as useful as an alternative of WalRcvStreaming(), to be able to do sanity checks based on the state of a WAL receiver. This will be used in a follow-up commit. Author: Xuneng Zhou <xunengzhou@gmail.com> Discussion: https://postgr.es/m/19093-c4fff49a608f82a0@postgresql.org
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/replication/walreceiverfuncs.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/backend/replication/walreceiverfuncs.c b/src/backend/replication/walreceiverfuncs.c
index 8de2886ff0b..6a693d854c4 100644
--- a/src/backend/replication/walreceiverfuncs.c
+++ b/src/backend/replication/walreceiverfuncs.c
@@ -119,6 +119,20 @@ WalRcvRunning(void)
return false;
}
+/* Return the state of the walreceiver. */
+WalRcvState
+WalRcvGetState(void)
+{
+ WalRcvData *walrcv = WalRcv;
+ WalRcvState state;
+
+ SpinLockAcquire(&walrcv->mutex);
+ state = walrcv->walRcvState;
+ SpinLockRelease(&walrcv->mutex);
+
+ return state;
+}
+
/*
* Is walreceiver running and streaming (or at least attempting to connect,
* or starting up)?