diff options
Diffstat (limited to 'src/include/replication')
| -rw-r--r-- | src/include/replication/walreceiver.h | 6 | ||||
| -rw-r--r-- | src/include/replication/walsender_private.h | 9 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/include/replication/walreceiver.h b/src/include/replication/walreceiver.h index c8652dbd489..9a8b2e207ec 100644 --- a/src/include/replication/walreceiver.h +++ b/src/include/replication/walreceiver.h @@ -114,6 +114,9 @@ typedef struct */ char slotname[NAMEDATALEN]; + /* set true once conninfo is ready to display (obfuscated pwds etc) */ + bool ready_to_display; + slock_t mutex; /* locks shared variables shown above */ /* @@ -122,9 +125,6 @@ typedef struct */ bool force_reply; - /* set true once conninfo is ready to display (obfuscated pwds etc) */ - bool ready_to_display; - /* * Latch used by startup process to wake up walreceiver after telling it * where to start streaming (after setting receiveStart and diff --git a/src/include/replication/walsender_private.h b/src/include/replication/walsender_private.h index 0aa80d5c3e2..17c68cba235 100644 --- a/src/include/replication/walsender_private.h +++ b/src/include/replication/walsender_private.h @@ -30,10 +30,17 @@ typedef enum WalSndState /* * Each walsender has a WalSnd struct in shared memory. + * + * This struct is protected by 'mutex', with two exceptions: one is + * sync_standby_priority as noted below. The other exception is that some + * members are only written by the walsender process itself, and thus that + * process is free to read those members without holding spinlock. pid and + * needreload always require the spinlock to be held for all accesses. */ typedef struct WalSnd { - pid_t pid; /* this walsender's process id, or 0 */ + pid_t pid; /* this walsender's PID, or 0 if not active */ + WalSndState state; /* this walsender's state */ XLogRecPtr sentPtr; /* WAL has been sent up to this point */ bool needreload; /* does currently-open file need to be |
