replication_readme_v1.patch
application/octet-stream
Filename: replication_readme_v1.patch
Type: application/octet-stream
Part: 0
Message:
Update of replication/README
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
Series: patch v1
| File | + | − |
|---|---|---|
| src/backend/replication/README | 18 | 0 |
*** a/src/backend/replication/README --- b/src/backend/replication/README *************** *** 4,14 **** Walreceiver - libpqwalreceiver API ---------------------------------- The transport-specific part of walreceiver, responsible for connecting to ! the primary server and receiving WAL files, is loaded dynamically to avoid ! having to link the main server binary with libpq. The dynamically loaded ! module is in libpqwalreceiver subdirectory. ! The dynamically loaded module implements three functions: bool walrcv_connect(char *conninfo, XLogRecPtr startpoint) --- 4,14 ---- ---------------------------------- The transport-specific part of walreceiver, responsible for connecting to ! the primary server, receiving WAL files and sending messages, is loaded ! dynamically to avoid having to link the main server binary with libpq. ! The dynamically loaded module is in libpqwalreceiver subdirectory. ! The dynamically loaded module implements four functions: bool walrcv_connect(char *conninfo, XLogRecPtr startpoint) *************** *** 16,22 **** bool walrcv_connect(char *conninfo, XLogRecPtr startpoint) Establish connection to the primary, and starts streaming from 'startpoint'. Returns true on success. - bool walrcv_receive(int timeout, unsigned char *type, char **buffer, int *len) Retrieve any message available through the connection, blocking for --- 16,21 ---- *************** *** 26,31 **** otherwise false. On success, a pointer to the message payload is stored in --- 25,34 ---- returned buffer is valid until the next call to walrcv_* functions, the caller should not attempt freeing it. + void walrcv_send(const char *buffer, int nbytes) + + Send a message to XLOG stream. + void walrcv_disconnect(void); Disconnect. *************** *** 45,55 **** to fetch more WAL (if streaming replication is configured). Walreceiver is a postmaster subprocess, so the startup process can't fork it directly. Instead, it sends a signal to postmaster, asking postmaster to launch it. Before that, however, startup process fills in WalRcvData->conninfo, ! and initializes the starting point in WalRcvData->receivedUpto. As walreceiver receives WAL from the master server, and writes and flushes ! it to disk (in pg_xlog), it updates WalRcvData->receivedUpto. Startup process ! polls that to know how far it can proceed with WAL replay. Walsender IPC ------------- --- 48,62 ---- Walreceiver is a postmaster subprocess, so the startup process can't fork it directly. Instead, it sends a signal to postmaster, asking postmaster to launch it. Before that, however, startup process fills in WalRcvData->conninfo, ! and initializes the starting point in WalRcvData->receiveStart. As walreceiver receives WAL from the master server, and writes and flushes ! it to disk (in pg_xlog), it updates WalRcvData->receivedUpto and signals ! the startup process to know how far WAL replay can advance. ! ! Walreceiver sends information about replication progress to the master server ! whenever either it writes or flushes new WAL, or the specified interval elapses. ! This is used for reporting purpose. Walsender IPC ------------- *************** *** 80,90 **** phase. A walsenders will look like a regular backends until it's done with the initialization and has marked itself in PMSignal array, and at process termination, after unmarking the PMSignal slot. ! Each walsender allocates an entry from the WalSndCtl array, and advertises ! there how far it has streamed WAL already. This is used at checkpoints, to ! avoid recycling WAL that hasn't been streamed to a slave yet. However, ! that doesn't stop such WAL from being recycled when the connection is not ! established. Walsender - walreceiver protocol --- 87,95 ---- initialization and has marked itself in PMSignal array, and at process termination, after unmarking the PMSignal slot. ! Each walsender allocates an entry from the WalSndCtl array, and tracks ! information about replication progress. User can monitor them via ! statistics views. Walsender - walreceiver protocol