fix(fuse): land a conflict copy in the root when its folder is gone (B150)

This commit is contained in:
nvrl committed 2026-10-04 04:45:48 +02:00
1 parent 50ae25bb88
commit 23dc5c3723
5 files changed
+78 -3

No files matched your search

+20
View File
@@ -12,6 +12,26 @@ Conventions:
---
## B150 — A conflict copy whose folder is gone retries forever
**Status:** Fixed (unverified).
**Found:** 2026-10-04, by the journal check of the account run on a6f36d5: 33 warnings, one
every two minutes for the whole run, all "queued write conflicts; keeping a conflict copy" for a
`write.bin` from an earlier run's B79 case, each followed by `DoesNotExist` from Drive.
**Where:** `Core::keep_as_conflict_copy` in `crates/pdfs-fuse/src/drain.rs`.
**Cause.** A queued write to a file that was trashed or deleted on Drive is kept as a conflict
copy beside the file. When the file's folder was deleted too, the upload into it failed, the op
backed off and tried again, with no end. The copy only fell back to the root when the tree had
forgotten the file, not when Drive had lost its folder.
**Fix.** The copy checks that the folder is still on Drive and not trashed, and lands in the
location's root otherwise. Sim test `a_queued_write_whose_folder_was_trashed_lands_in_the_root`.
**Left open.** How the B79 case's bytes stayed in `staging/` after the file was deleted, so that
the next start queued them again ("reconciled orphaned staged writes queued=1"), is not known yet.
## B149 — `pdfs rename` or `pdfs move` right after a rename through the mount is undone
**Status:** Fixed (unverified).
+2
View File
@@ -33,6 +33,8 @@ folder by local id too.
for this release.
### Fixed
- **A change to a file deleted elsewhere, together with its folder, no longer retries forever.**
The conflict copy that keeps it now lands in the location's root (B150).
- **`pdfs rename` and `pdfs move` right after a change through the mount are no longer undone.**
They are queued behind it, and they work on a file that has not reached Drive yet (B149).
- **A folder kept offline before it reached Drive stays kept offline.** Its pin was lost when the
+1 -1
View File
@@ -9,7 +9,7 @@ Tracks `docs/MILESTONE-3.0.0.md`. Update it with every commit that moves a phase
- **Phase 2**: local ids, inode = local id, one tree for every mount (2.10.0).
- **Phase 3, first part**: mkdir, create, rename, unlink and rmdir on the mount are recorded
locally and sent from the queue; `"local_first": false` brings back the old path (5e0f30c).
- Fixes from the simulation and account runs since then: B141 to B149.
- Fixes from the simulation and account runs since then: B141 to B150.
- **Sync issues, first cut** (§6.2): refusals sorted into issues, shown at once in the app,
tray and CLI; Export button and `pdfs sync export`; `pdfs sync issues`.