Skip to content

feat: rollback — schema-downgrade guard + config snapshot/restore - #25

Merged
vsutra-admin merged 1 commit into
ansible-deployfrom
feat/rollback-schema-guard-and-config-snapshot
Jun 21, 2026
Merged

feat: rollback — schema-downgrade guard + config snapshot/restore#25
vsutra-admin merged 1 commit into
ansible-deployfrom
feat/rollback-schema-guard-and-config-snapshot

Conversation

@vsutra-admin

Copy link
Copy Markdown

Two safety/usability extensions to the rollback flow:

  1. Schema-incompatible downgrade detection. Before stopping the service, query Liquibase DATABASECHANGELOG for rows with DATEEXECUTED > backup_mtime. If any new migrations exist, halt with full diagnostics (live release, backup release, count, list-changesets query, three remediation paths). Override: -e allow_downgrade=true.

  2. Config snapshot / restore. Upgrade backup now also snapshots openspecimen.properties, setenv.sh, and context.xml into <backup>/config/, plus the previous .release marker. Rollback restores all of these — no separate site.yml run needed for config rollback.

Closes the rollback design gaps raised in #30.

…t/restore

openspecimen role (upgrade backup phase):
  - Adds <backup>/config/ subdirectory containing openspecimen.properties,
    setenv.sh, and context.xml as they were at deploy time
  - Adds <backup>/.release marker snapshot (previously missing — rollback's
    marker-restore step was a no-op against backups created before this fix)

rollback.yml:
  - Pre-stop safety check: queries DATABASECHANGELOG for rows where
    DATEEXECUTED > backup_mtime. If new Liquibase migrations exist since the
    backup, halts with operator-friendly diagnostics naming the live release,
    backup release, mtime, and changeset count. Provides the exact SELECT to
    list offending changesets and three remediation paths.
  - Override: -e allow_downgrade=true (emits a warning, then proceeds)
  - Restores openspecimen.properties / setenv.sh / context.xml from
    <backup>/config/ in addition to WAR/plugins/lib. No separate site.yml
    run needed for config rollback.
  - Header comment + usage examples updated

docs/DEPLOY-UPGRADE.md:
  - Restoration scope table extended (config snapshot, marker restore)
  - New 'Schema-downgrade safeguard' section with example failure output and
    the three remediation paths documented in the playbook error message
@vsutra-admin
vsutra-admin merged commit cce20ba into ansible-deploy Jun 21, 2026
@vsutra-admin
vsutra-admin deleted the feat/rollback-schema-guard-and-config-snapshot branch June 21, 2026 01:34
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.

1 participant