Skip to content

feat: add check_empty_wal_archive to WAL and RestoreJobHooks requests - #353

Merged
leonardoce merged 1 commit into
mainfrom
dev/check-empty-wal-archive
Jul 20, 2026
Merged

feat: add check_empty_wal_archive to WAL and RestoreJobHooks requests#353
leonardoce merged 1 commit into
mainfrom
dev/check-empty-wal-archive

Conversation

@mnencia

@mnencia mnencia commented Jul 16, 2026

Copy link
Copy Markdown
Member

Verifying a WAL archive destination before writing to it is a decision about the Cluster's state, and that is the operator's domain, not the plugin's. Today, though, a plugin that performs this check re-derives the decision on its own (e.g. by reading a Cluster annotation directly), duplicating policy that belongs upstream instead of relying on a single source of truth.

Add an explicit, optional boolean field to WALArchiveRequest and to RestoreJobHooks' RestoreRequest so the operator can compute the decision once and hand it to the plugin explicitly. The field is optional: an unset value means the request comes from an operator that predates this field, and the plugin is free to handle that case as it sees fit.

Related: cloudnative-pg/cloudnative-pg#11216 (operator) and cloudnative-pg/plugin-barman-cloud#1009 (plugin) consume this field.

Verifying a WAL archive destination before writing to it is a decision
about the Cluster's state, and that is the operator's domain, not the
plugin's. Today, though, a plugin that performs this check re-derives
the decision on its own (e.g. by reading a Cluster annotation
directly), duplicating policy that belongs upstream instead of relying
on a single source of truth.

Add an explicit, optional boolean field to WALArchiveRequest and to
RestoreJobHooks' RestoreRequest so the operator can compute the
decision once and hand it to the plugin explicitly. The field is
optional: an unset value means the request comes from an operator that
predates this field, and the plugin is free to handle that case as it
sees fit.

Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
@leonardoce
leonardoce force-pushed the dev/check-empty-wal-archive branch from db806ae to bd5c39a Compare July 20, 2026 13:14
@leonardoce
leonardoce merged commit b981bcc into main Jul 20, 2026
6 checks passed
@leonardoce
leonardoce deleted the dev/check-empty-wal-archive branch July 20, 2026 13:18
leonardoce pushed a commit to cloudnative-pg/plugin-barman-cloud that referenced this pull request Jul 21, 2026
Archive() and the restore job hook each re-derived, on their own,
whether to verify the WAL archive destination is empty, by reading a
Cluster annotation and, for Archive, an on-disk marker file. That
decision belongs to the operator, which already tracks both the
annotation and the marker file's lifecycle.

Honor cnpg-i's new WALArchiveRequest/RestoreRequest field
CheckEmptyWalArchive when the operator sets it: obey it directly,
without re-inspecting the marker file. Only fall back to the previous
annotation-and-marker-file logic when talking to an operator that
predates this field.

Related: cloudnative-pg/cnpg-i#353 adds the field this depends on;
cloudnative-pg/cloudnative-pg#11216 is the operator-side counterpart.

Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
Signed-off-by: Armando Ruocco <armando.ruocco@enterprisedb.com>
Co-authored-by: Armando Ruocco <armando.ruocco@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.

3 participants