Exit as interrupted when Ctrl-C lands during a local index write (closes #301)
check / check (push) Failing after 3h14m44s
check / check (push) Failing after 3h14m44s
Once the run's context is cancelled, database/sql rolls an open transaction back itself, so the rollback in WithTx returned sql.ErrTxDone. WithTx treated any rollback error as fatal and called os.Exit(1): an interrupted backup printed "FATAL: failed to rollback transaction", exited 1 instead of 130 and skipped its deferred cleanup. WithTx now ignores sql.ErrTxDone from the rollback and returns the body's error. A rollback that really fails is returned together with the body's error instead of ending the process. On a panic the rollback error is dropped and the panic carries on. Model: opus-5-5
This commit is contained in:
@@ -22,6 +22,16 @@ the tag exists and is exercised; what is left is merging `next` to
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-13: Made Ctrl-C or SIGTERM during a local index write end the
|
||||
command as interrupted
|
||||
([issue #301](https://git.eeqj.de/sneak/vaultik/issues/301)). Once the
|
||||
run is cancelled, `database/sql` rolls an open transaction back itself,
|
||||
so the rollback in `WithTx` failed with `sql.ErrTxDone` and the process
|
||||
exited 1 with `FATAL: failed to rollback transaction`, skipping the
|
||||
interrupted exit and message. That result is no longer an error, and a
|
||||
rollback that does fail is returned with the transaction's error
|
||||
instead of ending the process.
|
||||
|
||||
- 2026-10-12: Rejected a retention duration longer than about 292 years
|
||||
([issue #289](https://git.eeqj.de/sneak/vaultik/issues/289)). The
|
||||
number given to `--older-than` or `--keep-newer-than` was multiplied
|
||||
|
||||
Reference in New Issue
Block a user