Re: [HACKERS] make async slave to wait for lsn to be replayed
Euler Taveira <euler@eulerto.com>
On Thu, Mar 28, 2024, at 9:39 AM, Alexander Korotkov wrote: > Fixed along with other issues spotted by Alexander Lakhin. [I didn't read the whole thread. I'm sorry if I missed something ...] You renamed the function in a previous version but let me suggest another one: pg_wal_replay_wait. It uses the same pattern as the other recovery control functions [1]. I think "for" doesn't add much for the function name and "lsn" is used in functions that return an LSN (that's not the case here). postgres=# \df pg_wal_replay* List of functions -[ RECORD 1 ]-------+--------------------- Schema | pg_catalog Name | pg_wal_replay_pause Result data type | void Argument data types | Type | func -[ RECORD 2 ]-------+--------------------- Schema | pg_catalog Name | pg_wal_replay_resume Result data type | void Argument data types | Type | func Regarding the arguments, I think the timeout should be bigint. There is at least another function that implements a timeout that uses bigint. postgres=# \df pg_terminate_backend List of functions -[ RECORD 1 ]-------+-------------------------------------- Schema | pg_catalog Name | pg_terminate_backend Result data type | boolean Argument data types | pid integer, timeout bigint DEFAULT 0 Type | func I also suggests that the timeout unit should be milliseconds, hence, using bigint is perfectly fine for the timeout argument. + <para> + Throws an ERROR if the target <acronym>lsn</acronym> was not replayed + on standby within given timeout. Parameter <parameter>timeout</parameter> + is the time in seconds to wait for the <parameter>target_lsn</parameter> + replay. When <parameter>timeout</parameter> value equals to zero no + timeout is applied. + </para></entry> [1] https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL -- Euler Taveira EDB https://www.enterprisedb.com/
Commits
-
Ensure standby promotion point in 043_wal_replay_wait.pl
- 2520226c953c 18.0 landed
-
Minor cleanup related to pg_wal_replay_wait() procedure
- 85b98b8d5a48 18.0 landed
-
Adjust pg_wal_replay_wait() procedure behavior on promoted standby
- 867d396ccd2a 18.0 landed
-
pg_wal_replay_wait(): Fix typo in the doc
- 8036d73ae3d4 18.0 landed
-
Implement pg_wal_replay_wait() stored procedure
- 3c5db1d6b016 18.0 landed
- 06c418e163e9 17.0 landed
-
Revert: Implement pg_wal_replay_wait() stored procedure
- 772faafca1b2 17.0 landed
-
Call WaitLSNCleanup() in AbortTransaction()
- 74eaf66f988c 17.0 landed
-
Clarify what is protected by WaitLSNLock
- ee79928441e7 17.0 landed
-
Use an LWLock instead of a spinlock in waitlsn.c
- 25f42429e2ff 17.0 landed
-
Use the pairing heap instead of a flat array for LSN replay waiters
- bf1e65080629 17.0 landed
-
Minor improvements for waitlsn.c
- e37662f22158 17.0 landed
-
Make the order of the header file includes consistent
- 97d85be36544 17.0 cited