mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-14 01:27:03 +01:00
fix(fuse): keep pinned files on disk through remote changes
A remote change to a pinned file called `ContentCache::evict`, which does not check pins, and only the pin request itself ever downloaded anything. An edit from another device, or even a rename, left the file listed as kept offline with no copy, so the next read downloaded it or failed without a network. A file added to a pinned folder elsewhere was never downloaded, and a folder pin whose downloads failed while offline never retried them. A remote change no longer evicts a pinned file's copy. The copy is checked against the revision's (mtime, size), so a newer revision does not read it, and a rename keeps the mtime (B123), so the copy stays valid. A new pdfs-pin-keeper thread checks pins again and downloads files that are missing or stale: - the pins a batch of remote events changed, after the batch's listings are dropped, including a pinned folder that gets a new file; - every pin at startup, when the link returns, and after the event feed loses continuity; - a file whose version is restored. Failed downloads retry with a backoff of 30 s to 30 min. Pinning and the keeper settle a provisional size first: a copy stored under the ciphertext size never matched the plaintext it holds. Fixes B282.
This commit is contained in:
1 parent
3f45e89391
commit
14a663cee9
10 files changed
+460
-15
No files matched your search
@@ -467,6 +467,7 @@ both with `pdfs_core::search::relevance_score`, so the prompt can merge them int
|
||||
| `pdfs-sync`, `pdfs-sync-poll` | Mirror passes and the remote poll (§7) |
|
||||
| Tokio runtime | Remote calls, and the Drive and photos event streams (§6) |
|
||||
| `pdfs-online-probe` | Probes Drive while offline |
|
||||
| `pdfs-pin-keeper` | Checks pins once a second for work: every pin at startup, when the link returns and after the event feed loses continuity, and the pins a batch of remote events changed. Downloads files kept offline that are missing or stale; failures retry with a backoff of 30 s to 30 min (`docs/BUGS.md` B282) |
|
||||
| `pdfs-supervisor` | Logs workers that hold one job for minutes, a queue that stops draining, and control requests that never return; samples memory; pings the systemd watchdog only after a round trip over the control socket succeeds (`WatchdogSec=120`) |
|
||||
| `pdfs-conflict-sweep` | Optional. After 30 s, then every 5 minutes, finds `(sync-conflict …)` copies identical (size and SHA-1) to their original. `conflict_sweep` decides: `off`, `report` (default) or `enforce`, which trashes them after re-checking each one |
|
||||
| Smaller helpers | `pdfs-localindex` (home index for search), `pdfs-pause` (ends a timed pause), `pdfs-similar` (similar photos, on request), `pdfs-diagnostics` |
|
||||
|
||||
Reference in new issue
Block a user