↓ Skip to main content

“However, inside of a transaction Datomic behaves as if operations were evaluated concurrently.”

Kyle Kingsburyjepsen.io ↗

Jepsen found Datomic’s guarantees between transactions stronger than advertised. Inside a single transaction, operations run as if concurrent, which can violate three widely used definitions of Serializability and lets composed transaction functions break invariants. Nubank paid for the analysis and runs Datomic for nearly 94 million users. It will keep the behaviour, so every developer who writes two transaction functions now has to know about it.