| Comment: | fix(cli): hold the write lock from snapshot's read of the tip to its commit
Under -tags test_ncruces, TestSnapshotConcurrentProcesses failed 8 of 20 runs. Besides the open-time lock error fixed in db, a snapshot read the tip's manifest outside any transaction while another process's check-in re-deltaed it, and failed with a hash mismatch. A snapshot now runs in one bound write transaction from the read of the tip to its commit, so no other check-in can land in between; the optimistic retry loop it replaces is gone. |
|---|---|
| Timelines: | family | ancestors | main | trunk | feat/cli-snapshot |
| Files: | files | file ages | folders |
| SHA3-256: |
363ee3b9dfde61b3f38b6ed0ba5bdca4 |
| User & Date: | [email protected] on 2026-10-19 23:13:12.000 |
| Other Links: | branch diff | manifest | tags |
|
2026-10-19
| ||
| 23:13 |
fix(cli): hold the write lock from snapshot's read of the tip to its commit
Under -tags test_ncruces, TestSnapshotConcurrentProcesses failed 8 of 20 runs. Besides the open-time lock error fixed in db, a snapshot read the tip's manifest outside any transaction while another process's check-in re-deltaed it, and failed with a hash mismatch. A snapshot now runs in one bound write transaction from the read of the tip to its commit, so no other check-in can land in between; the optimistic retry loop it replaces is gone. leaf check-in: 363ee3b9df user: [email protected] tags: feat/cli-snapshot, main, trunk | |
| 23:10 |
fix(db): set busy_timeout before any other pragma on open
The drivers build the DSN's _pragma parameters from a map and run them in that order, so journal_mode or foreign_keys often ran before busy_timeout. An open while another process held a lock then failed at once with "database is locked" instead of waiting: one cause of TestSnapshotConcurrentProcesses failing under -tags test_ncruces. check-in: 69c95d4419 user: [email protected] tags: feat/cli-snapshot, main, trunk | |