summaryrefslogtreecommitdiff
path: root/src/include/replication
diff options
context:
space:
mode:
authorMagnus Hagander2011-01-11 20:25:28 +0000
committerMagnus Hagander2011-01-11 20:25:28 +0000
commit4c8e20f815cbdf043d6d27906fd85ae50c9e4870 (patch)
treebae18c14b6b970108fffa0a1f27085b6e65dd0b1 /src/include/replication
parent47a5f3e9dab68f47ebadc759afb97b900c437c54 (diff)
Track walsender state in shared memory and expose in pg_stat_replication
Diffstat (limited to 'src/include/replication')
-rw-r--r--src/include/replication/walsender.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/include/replication/walsender.h b/src/include/replication/walsender.h
index d6767b9dcf3..0b4a143f827 100644
--- a/src/include/replication/walsender.h
+++ b/src/include/replication/walsender.h
@@ -16,12 +16,22 @@
#include "storage/latch.h"
#include "storage/spin.h"
+
+typedef enum WalSndState
+{
+ WALSNDSTATE_STARTUP = 0,
+ WALSNDSTATE_BACKUP,
+ WALSNDSTATE_CATCHUP,
+ WALSNDSTATE_STREAMING
+} WalSndState;
+
/*
* Each walsender has a WalSnd struct in shared memory.
*/
typedef struct WalSnd
{
pid_t pid; /* this walsender's process id, or 0 */
+ WalSndState state; /* this walsender's state */
XLogRecPtr sentPtr; /* WAL has been sent up to this point */
slock_t mutex; /* locks shared variables shown above */
@@ -53,6 +63,7 @@ extern void WalSndSignals(void);
extern Size WalSndShmemSize(void);
extern void WalSndShmemInit(void);
extern void WalSndWakeup(void);
+extern void WalSndSetState(WalSndState state);
extern Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS);