50#define WALRCV_STARTUP_TIMEOUT 10
101 bool stopped =
false;
166 bool stopped =
false;
197 bool stopped =
false;
221 walrcvpid = walrcv->
pid;
234 kill(walrcvpid, SIGTERM);
243 WAIT_EVENT_WAL_RECEIVER_EXIT);
262 const char *slotname,
bool create_temp_slot)
284 if (conninfo != NULL)
295 if (slotname != NULL && slotname[0] !=
'\0')
329 walrcv_proc = walrcv->
procno;
355 if (latestChunkStart)
394 if (receivePtr == replayPtr)
399 if (chunkReplayStartTime == 0)
static void pg_atomic_write_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
static void pg_atomic_init_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
static uint64 pg_atomic_read_u64(volatile pg_atomic_uint64 *ptr)
long TimestampDifferenceMilliseconds(TimestampTz start_time, TimestampTz stop_time)
TimestampTz GetCurrentTimestamp(void)
Datum now(PG_FUNCTION_ARGS)
#define Assert(condition)
#define MemSet(start, val, len)
bool ConditionVariableCancelSleep(void)
void ConditionVariableBroadcast(ConditionVariable *cv)
void ConditionVariablePrepareToSleep(ConditionVariable *cv)
void ConditionVariableInit(ConditionVariable *cv)
void ConditionVariableSleep(ConditionVariable *cv, uint32 wait_event_info)
void SetLatch(Latch *latch)
void SendPostmasterSignal(PMSignalReason reason)
@ PMSIGNAL_START_WALRECEIVER
size_t strlcpy(char *dst, const char *src, size_t siz)
#define GetPGProcByNumber(n)
#define INVALID_PROC_NUMBER
#define ShmemRequestStruct(...)
static void SpinLockRelease(volatile slock_t *lock)
static void SpinLockAcquire(volatile slock_t *lock)
static void SpinLockInit(volatile slock_t *lock)
ShmemRequestCallback request_fn
TimestampTz lastMsgReceiptTime
TimeLineID receiveStartTLI
char slotname[NAMEDATALEN]
XLogRecPtr latestChunkStart
ConditionVariable walRcvStoppedCV
pg_atomic_uint64 writtenUpto
TimestampTz lastMsgSendTime
char conninfo[MAXCONNINFO]
XLogRecPtr GetWalRcvFlushRecPtr(XLogRecPtr *latestChunkStart, TimeLineID *receiveTLI)
bool WalRcvStreaming(void)
void RequestXLogStreaming(TimeLineID tli, XLogRecPtr recptr, const char *conninfo, const char *slotname, bool create_temp_slot)
XLogRecPtr GetWalRcvWriteRecPtr(void)
void ShutdownWalRcv(void)
const ShmemCallbacks WalRcvShmemCallbacks
#define WALRCV_STARTUP_TIMEOUT
static void WalRcvShmemInit(void *arg)
WalRcvState WalRcvGetState(void)
static void WalRcvShmemRequest(void *arg)
int GetReplicationApplyDelay(void)
int GetReplicationTransferLatency(void)
#define XLogSegmentOffset(xlogptr, wal_segsz_bytes)
#define XLogRecPtrIsValid(r)
static TimeLineID receiveTLI
TimestampTz GetCurrentChunkReplayStartTime(void)
XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI)