feat: add check_empty_wal_archive to WAL and RestoreJobHooks requests - #353
Merged
Conversation
mnencia
force-pushed
the
dev/check-empty-wal-archive
branch
from
July 16, 2026 14:42
aaee712 to
db806ae
Compare
armru
approved these changes
Jul 17, 2026
leonardoce
approved these changes
Jul 20, 2026
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
force-pushed
the
dev/check-empty-wal-archive
branch
from
July 20, 2026 13:14
db806ae to
bd5c39a
Compare
armru
approved these changes
Jul 20, 2026
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.