You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test: scope SQLite-deadlock workarounds to the still-affected surface
Local verification 2026-04-23 with SQLite 3.51.3 (rusqlite 0.39):
- perima-db tests: 5/5 PASS, 0 hangs, 8s each. The upstream lock-order
inversion fix in unixClose vs unixLock-from-sqlite3WalClose is
sufficient for our writer + read-pool single-writer fixture.
- perima-desktop integration tests: 7/12 STILL deadlock at 80s. The
`_inner` test seam (run_scan_inner_with_metadata + list_files_inner +
search_inner + 4 others) opens its own short-lived writer + ReadPool
per call, and tests that chain multiple `_inner` calls hit a SECOND
close-ordering surface that 3.51.3 does not address. Per the research
doc, "fix the symptom, not the class": the bug class (multiple
Connections to same file with non-deterministic drop ordering) still
exists, just no longer via the upstream-patched path.
Workarounds reverted (SQLite fix is sufficient):
- nextest.toml: drop perima-db retries=2 override (5/5 verified clean).
- nextest.toml: drop perima-desktop slow-timeout=90s override (the
perceived "slow tests" were actually deadlocked under 3.51.1).
Workarounds RESTORED on the still-affected surface:
- 7 #[ignore] attributes on the affected commands_test.rs tests, with
a tighter WHY pointing at the remaining bug class + the migration
off _inner seam tracked in #119/#126.
Net effect: cleaner config + targeted test-skip. Matches the research
recommendation tier-1 (rusqlite bump) without false-claim cleanup.
#[ignore = "GH #131 — desktop _inner test seam still deadlocks under SQLite 3.51.3 (separate close-ordering surface, not the upstream-fixed lock-order inversion). Tracked for migration off _inner seam in #119/#126."]
80
77
asyncfnscan_indexes_files(){
81
78
let fixture_dir = tempfile::tempdir().expect("tempdir for fixtures");
82
79
let data_dir = tempfile::tempdir().expect("tempdir for data");
#[ignore = "GH #131 — desktop _inner test seam still deadlocks under SQLite 3.51.3 (separate close-ordering surface, not the upstream-fixed lock-order inversion). Tracked for migration off _inner seam in #119/#126."]
128
116
asyncfnlist_files_after_scan(){
129
117
let fixture_dir = tempfile::tempdir().expect("tempdir for fixtures");
130
118
let data_dir = tempfile::tempdir().expect("tempdir for data");
#[ignore = "GH #131 — desktop _inner test seam still deadlocks under SQLite 3.51.3 (separate close-ordering surface, not the upstream-fixed lock-order inversion). Tracked for migration off _inner seam in #119/#126."]
157
142
asyncfnlist_files_with_metadata_returns_rows(){
158
143
let fixture_dir = tempfile::tempdir().expect("tempdir for fixtures");
159
144
let data_dir = tempfile::tempdir().expect("tempdir for data");
#[ignore = "GH #131 — desktop _inner test seam still deadlocks under SQLite 3.51.3 (separate close-ordering surface, not the upstream-fixed lock-order inversion). Tracked for migration off _inner seam in #119/#126."]
243
225
asyncfnlist_volumes_after_scan(){
244
226
let fixture_dir = tempfile::tempdir().expect("tempdir for fixtures");
245
227
let data_dir = tempfile::tempdir().expect("tempdir for data");
#[ignore = "GH #131 — desktop _inner test seam still deadlocks under SQLite 3.51.3 (separate close-ordering surface, not the upstream-fixed lock-order inversion). Tracked for migration off _inner seam in #119/#126."]
#[ignore = "GH #131 — desktop _inner test seam still deadlocks under SQLite 3.51.3 (separate close-ordering surface, not the upstream-fixed lock-order inversion). Tracked for migration off _inner seam in #119/#126."]
#[ignore = "GH #131 — desktop _inner test seam still deadlocks under SQLite 3.51.3 (separate close-ordering surface, not the upstream-fixed lock-order inversion). Tracked for migration off _inner seam in #119/#126."]
0 commit comments