| ▲ | hipvlady 5 hours ago | |
Author here. Why do we need a taxonomy when we could just say "we stop lost updates"? Two of the four aren't mine to fix. Key mismatch (write to X, read from Y) and compaction drop (a summarisation step eats the fact) are application-layer bugs. The most a layer underneath can do is make them visible in a trace. I separated them because mixing them up with the preventable ones is how people end up "fixing" a race that was actually a routing bug. The two that are preventable are the classic ones, just with new names. Concurrent lost-update is a read-modify-write race, handled with a compare-and-set on a version that travels with the write. If you read something and then write something, it's called 'stale-read-then-write'. This is dealt with using something called 'invalidation'. This means that the stale writer is denied and forced to re-read before it can land anything. None of the mechanisms are new. MESI is from CPUs and CAS is from databases. The only thing they need to do is connect them to the write paths that the agent frameworks use, as well as the TLA+ specifications that run in CI with a mutant per specification that has to fail. The plan is simple: there will be one coordinator, one host, and writers who will work with them. Cross-host isn't available yet; it's on a demand basis. I'd really like to hear about any other failure modes. | ||