
Resolver v3: a temporal B+ tree for FoundationDB's conflict history, from routing to reclamation
FoundationDB rejects a transaction once its read version is more than five seconds old because the resolver keeps only that much write history. Resolver v3 replaces that history with a temporal B+ tree under a memory budget and processes each batch in two phases: one descent routes every read and write begin together and checks the reads, then the accepted writes are applied in key order by cooperative tasks that search and prefetch ahead of a single writer. Under the same 6 GiB budget, v3.8 retains at least 582.9 seconds of conflict history after reclamation begins—2.20× FoundationDB’s calibrated 265-second window. The 5,400-second trace replays in 0.76× FoundationDB’s time on Intel and in comparable time on AMD. These timing comparisons cross sessions: v3.8 used HugeTLB pages, while the archived references used ordinary memory.


