Ziel nach Rollback auf der Quelle optional zurückrollen #24

Closed
thorsten.spille wants to merge 0 commits from thorsten.spille/feature-5-target-rollback into main AGit

Setzt #5 um.

Problem

Fehlt der neueste Snapshot eines Replikats auf der Quelle (Rollback oder dort gelöscht), kann zsync nicht anfügen. Das Dataset wird bis zur manuellen Behebung nicht mehr repliziert (seit #21 als diverged mit neuestem gemeinsamem Snapshot gemeldet).

Neue Einstellungen (Default aus = bisheriges Verhalten)

  • target_rollback=1: Replikat per zfs rollback -r auf den neuesten gemeinsamen Snapshot zurückrollen und im selben Lauf ab dort anfügen. Die verworfenen Snapshots stehen im Log ([WARN]).
  • target_rollback_max (Default 24): höchstens so viele Ziel-Snapshots darf ein Rollback verwerfen; sonst kein Rollback, sondern [ERROR] mit kopierbarem zfs rollback -r <snapshot>.
  • Zustand rolled_back erscheint im Checkmk-Check als Hinweis; schlägt das anschließende Anfügen fehl, gilt failed.
  • Template, zsync.conf.example, Config-Log, README („Rollback on the source“), DOCUMENTATION_DE, CHANGELOG.

Tests

  • 18-rollback: Quelle auf daily-02 zurückgerollt, daily-05 neu → Rollback verwirft daily-03/04, Delta daily-02 → daily-05, Exit 0
  • 19-rollback-limit: Grenze 1 überschritten → kein Rollback, Fehler mit Befehl, Zustand diverged
  • alle anderen 17 Szenarien (Default aus): verändernde Aufrufe identisch zu main
  • zfs-Stub bildet rollback -r auf dem Ziel nach; Check-Test für den Hinweis (40/40)

Die Suche nach dem gemeinsamen Snapshot bezieht noch keine Bookmarks ein – das kommt mit #22.

Closes #5

🤖 Generated with Claude Code

Setzt #5 um. ## Problem Fehlt der neueste Snapshot eines Replikats auf der Quelle (Rollback oder dort gelöscht), kann zsync nicht anfügen. Das Dataset wird bis zur manuellen Behebung nicht mehr repliziert (seit #21 als `diverged` mit neuestem gemeinsamem Snapshot gemeldet). ## Neue Einstellungen (Default aus = bisheriges Verhalten) - `target_rollback=1`: Replikat per `zfs rollback -r` auf den neuesten gemeinsamen Snapshot zurückrollen und im selben Lauf ab dort anfügen. Die verworfenen Snapshots stehen im Log (`[WARN]`). - `target_rollback_max` (Default `24`): höchstens so viele Ziel-Snapshots darf ein Rollback verwerfen; sonst kein Rollback, sondern `[ERROR]` mit kopierbarem `zfs rollback -r <snapshot>`. - Zustand `rolled_back` erscheint im Checkmk-Check als Hinweis; schlägt das anschließende Anfügen fehl, gilt `failed`. - Template, `zsync.conf.example`, Config-Log, README („Rollback on the source“), DOCUMENTATION_DE, CHANGELOG. ## Tests - `18-rollback`: Quelle auf daily-02 zurückgerollt, daily-05 neu → Rollback verwirft daily-03/04, Delta daily-02 → daily-05, Exit 0 - `19-rollback-limit`: Grenze 1 überschritten → kein Rollback, Fehler mit Befehl, Zustand `diverged` - alle anderen 17 Szenarien (Default aus): verändernde Aufrufe identisch zu `main` - zfs-Stub bildet `rollback -r` auf dem Ziel nach; Check-Test für den Hinweis (40/40) Die Suche nach dem gemeinsamen Snapshot bezieht noch keine Bookmarks ein – das kommt mit #22. Closes #5 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Optionally roll the replica back after a rollback on the source
All checks were successful
/ build (pull_request) Successful in 25s
/ test (debian-13) (pull_request) Successful in 41s
/ test (ubuntu-24.04) (pull_request) Successful in 42s
/ test (ubuntu-26.04) (pull_request) Successful in 50s
/ test (debian-12) (pull_request) Successful in 50s
/ publish (pull_request) Has been skipped
/ package (pull_request) Successful in 0s
8d7065e219
If the newest snapshot of a replica does not exist on the source anymore
(rolled back or deleted there), the dataset could not be appended and stayed
like that until it was fixed manually.

New settings, default off (unchanged behavior):
- target_rollback=1: roll the replica back to the newest common snapshot
  (zfs rollback -r, newer replica snapshots are destroyed and listed in the
  log) and append from there in the same run
- target_rollback_max (default 24): maximum number of snapshots a rollback may
  destroy, otherwise only an error with the command to roll back manually

The dataset state rolled_back is shown as a hint in the Checkmk check; the
template, example config and the config log contain the new settings.

Tests: scenario 18 (rollback and append), 19 (limit exceeded); the zfs stub
applies rollbacks to the target snapshots; one new check case. All other
scenarios identical to main.

Refs #5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Manuell nach main gemergt (b1e3e0e), CI inkl. publish nach testing grün. Schließe den PR.

Manuell nach `main` gemergt (b1e3e0e), CI inkl. publish nach testing grün. Schließe den PR.
thorsten.spille closed this pull request 2026-10-15 19:42:30 +02:00
All checks were successful
/ build (pull_request) Successful in 25s
/ test (debian-13) (pull_request) Successful in 41s
/ test (ubuntu-24.04) (pull_request) Successful in 42s
/ test (ubuntu-26.04) (pull_request) Successful in 50s
/ test (debian-12) (pull_request) Successful in 50s
/ publish (pull_request) Has been skipped
/ package (pull_request) Successful in 0s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
bashclub/zsync!24
No description provided.