Skip to content

feat(wal): stream real per-block server acks for faster PostgreSQL feedback - #217

Open
fcanovai wants to merge 1 commit into
mainfrom
rpozero
Open

feat(wal): stream real per-block server acks for faster PostgreSQL feedback#217
fcanovai wants to merge 1 commit into
mainfrom
rpozero

Conversation

@fcanovai

@fcanovai fcanovai commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Report to PostgreSQL only what the Klio server has actually durably received, instead of the client's own local write/send progress, and deliver that feedback as soon as it's available.

The WAL Put RPC becomes bidirectional: the server now streams back a PutResult (write_lsn/flush_lsn) per batch of blocks it flushes, instead of a single result at the very end of the file. Both sides run a background goroutine to shuttle these acks without blocking the hot path, so the client can turn them into standby status updates for PostgreSQL as soon as they arrive, rather than only once the whole file is done.

Closes #98

…edback

Report to PostgreSQL only what the Klio server has actually durably
received, instead of the client's own local write/send progress, and
deliver that feedback as soon as it's available.

The WAL Put RPC becomes bidirectional: the server now streams back a
PutResult (write_lsn/flush_lsn) per batch of blocks it flushes, instead of
a single result at the very end of the file. Both sides run a background
goroutine to shuttle these acks without blocking the hot path, so the
client can turn them into standby status updates for PostgreSQL as soon
as they arrive, rather than only once the whole file is done.

Assisted-by: Claude
Co-authored-by: Leonardo Cecchi <leonardo.cecchi@enterprisedb.com>
Signed-off-by: Francesco Canovai <francesco.canovai@enterprisedb.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

WAL client reports unacknowledged flush position to Postgres, breaking RPO 0 guarantee

1 participant