mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-06 21:12:55 +00:00
WalProposer: Read WAL directly from WAL buffers in PG17 (#9171)
This reduces the overhead of the WalProposer when it is not being throttled by SK WAL acceptance rate
This commit is contained in:
committed by
GitHub
parent
d56c4e7a38
commit
5c5871111a
@@ -1473,11 +1473,33 @@ walprop_pg_wal_read(Safekeeper *sk, char *buf, XLogRecPtr startptr, Size count,
|
|||||||
{
|
{
|
||||||
NeonWALReadResult res;
|
NeonWALReadResult res;
|
||||||
|
|
||||||
res = NeonWALRead(sk->xlogreader,
|
#if PG_MAJORVERSION_NUM >= 17
|
||||||
buf,
|
if (!sk->wp->config->syncSafekeepers)
|
||||||
startptr,
|
{
|
||||||
count,
|
Size rbytes;
|
||||||
walprop_pg_get_timeline_id());
|
rbytes = WALReadFromBuffers(buf, startptr, count,
|
||||||
|
walprop_pg_get_timeline_id());
|
||||||
|
|
||||||
|
startptr += rbytes;
|
||||||
|
count -= rbytes;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (count == 0)
|
||||||
|
{
|
||||||
|
res = NEON_WALREAD_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert(count > 0);
|
||||||
|
|
||||||
|
/* Now read the remaining WAL from the WAL file */
|
||||||
|
res = NeonWALRead(sk->xlogreader,
|
||||||
|
buf,
|
||||||
|
startptr,
|
||||||
|
count,
|
||||||
|
walprop_pg_get_timeline_id());
|
||||||
|
}
|
||||||
|
|
||||||
if (res == NEON_WALREAD_SUCCESS)
|
if (res == NEON_WALREAD_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user