diff options
author | Simon Riggs <simon@2ndQuadrant.com> | 2011-07-19 03:40:03 +0100 |
---|---|---|
committer | Simon Riggs <simon@2ndQuadrant.com> | 2011-07-19 03:40:03 +0100 |
commit | 5286105800c7d5902f98f32e11b209c471c0c69c (patch) | |
tree | 59a5793296a3af901f864a16748e944edbd900ac /src/include | |
parent | 3d4890c0c5d27dfdf7d1a8816d7bdcdba3c39d21 (diff) |
Cascading replication feature for streaming log-based replication.
Standby servers can now have WALSender processes, which can work with
either WALReceiver or archive_commands to pass data. Fully updated
docs, including new conceptual terms of sending server, upstream and
downstream servers. WALSenders terminated when promote to master.
Fujii Masao, review, rework and doc rewrite by Simon Riggs
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/access/xlog.h | 6 | ||||
-rw-r--r-- | src/include/replication/walsender.h | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 7056fd61891..cdbf63fa76e 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -221,6 +221,9 @@ extern int wal_level; /* Do we need to WAL-log information required only for Hot Standby? */ #define XLogStandbyInfoActive() (wal_level >= WAL_LEVEL_HOT_STANDBY) +/* Can we allow the standby to accept replication connection from another standby? */ +#define AllowCascadeReplication() (EnableHotStandby && max_wal_senders > 0) + #ifdef WAL_DEBUG extern bool XLOG_DEBUG; #endif @@ -292,7 +295,8 @@ extern bool RecoveryInProgress(void); extern bool HotStandbyActive(void); extern bool XLogInsertAllowed(void); extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream); -extern XLogRecPtr GetXLogReplayRecPtr(void); +extern XLogRecPtr GetXLogReplayRecPtr(XLogRecPtr *restoreLastRecPtr); +extern XLogRecPtr GetStandbyFlushRecPtr(void); extern void UpdateControlFile(void); extern uint64 GetSystemIdentifier(void); diff --git a/src/include/replication/walsender.h b/src/include/replication/walsender.h index 6ee8668d0a4..cb8e70ef38a 100644 --- a/src/include/replication/walsender.h +++ b/src/include/replication/walsender.h @@ -35,6 +35,7 @@ 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 */ + bool needreload; /* does currently-open file need to be reloaded? */ /* * The xlog locations that have been written, flushed, and applied by @@ -92,6 +93,7 @@ extern WalSndCtlData *WalSndCtl; /* global state */ extern bool am_walsender; +extern bool am_cascading_walsender; extern volatile sig_atomic_t walsender_shutdown_requested; extern volatile sig_atomic_t walsender_ready_to_stop; @@ -106,7 +108,8 @@ extern Size WalSndShmemSize(void); extern void WalSndShmemInit(void); extern void WalSndWakeup(void); extern void WalSndSetState(WalSndState state); -extern void XLogRead(char *buf, XLogRecPtr recptr, Size nbytes); +extern void XLogRead(char *buf, XLogRecPtr startptr, Size count); +extern void WalSndRqstFileReload(void); extern Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS); |