mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-11-03 13:55:30 -05:00
A nested source's generation came from the size and mtime of data.db and its WAL. SQLite deletes the WAL when a pool's last connection closes and recreates it on the next read, and sqlx closes idle connections after 10 minutes, so the generation moved without any row changing. Titan re-copied the Mac's unchanged home store in full four times overnight, each round a 736 MB transfer and a 57-minute arena rebuild. Stores now keep a _revision row, a store id and a count of committed changes, maintained by triggers on every tracked table. Updates that change nothing, or only restamp scan_epoch or indexed_at, don't count. Listings and database headers use the revision instead of file metadata. The triggers put each single-row store write in a statement journal: the 300k-file scale test builds in 16-18s instead of 12-14s. temp_store=MEMORY brings it to 9-10s but moves large sorts on the writable pool into memory, so that's an open decision in the new incremental replication plan. Verified live: after one switch-over copy, titan made no transfer for twelve minutes, including across a Mac daemon restart.