Skip to content

v2.1.1

Choose a tag to compare

@Ayerdi Ayerdi released this 12 Aug 10:11
· 75 commits to main since this release

v2.1.1 — Save Sync estable

Retención configurable y backup externo tras cada publicación confirmada.

Cambios principales

  • SAVE_SYNC_RETENTION_PER_SLOT (defecto 1): conserva N versiones por slot.
  • SAVE_SYNC_POST_PUBLISH_COMMAND + SAVE_SYNC_POST_PUBLISH_TIMEOUT_SECONDS:
    backup externo (p. ej. restic) tras publicar, con 201 garantizado aunque
    falle el hook.
  • pending_backups atómico (protección contra la retención desde la misma
    transacción de publicación), 409 backup_in_progress en DELETE /history,
    purga stale en cleanup_canonical_versions.
  • Timeout con cancelación del grupo de proceso (SIGTERM → SIGKILL); auditoría
    de exitCode/timedOut en backup_hook_completed/backup_hook_failed.
  • restic incluido en la imagen Docker (caché excluido del backup).
  • SCHEMA_VERSION → 3.

Dependencias y CI

  • gunicorn 26, pytest 9.1.1, ruff 0.16 (hashes fijados); checkout v7 y
    setup-python v7 en GitHub Actions.

Verificación

  • 96 tests, cobertura 86.27 %, ruff limpio.
  • Prueba DR end-to-end realizada: publicación → snapshot restic → pérdida del
    volumen → restauración íntegra del save.