News for hackers. Stuff that matters.
Re:Jepsen: Datomic Pro 1.0.7075 by adrianco on Wednesday May 15, 2024 @04:26PM (#40371963)
I was a fly on the wall as this work was being done and it was super interesting to see the discussions. I was also surprised that Jepsen didn’t find critical bugs. Clarifying the docs and unusual (intentional) behaviors was a very useful outcome. It was a very worthwhile confidence building exercise given that we’re running a bank on Datomic…
Re:Jepsen: Datomic Pro 1.0.7075 by killingtime74 on Wednesday May 15, 2024 @07:05PM (#40373438)
Did you not do this work yourself before you started running the bank on it?
Re:Jepsen: Datomic Pro 1.0.7075 by cdchn on Wednesday May 15, 2024 @08:11PM (#40373858)
I doubt any organization that isn't directly putting lives on the line are testing database technology as thoroughly and competently as Jepsen. Banks jobs are to be banks, not be Jepsen.
Re:Jepsen: Datomic Pro 1.0.7075 by killingtime74 on Wednesday May 15, 2024 @11:16PM (#40374872)
I would have thought they would be more rigorous, since mistakes for them could threaten the very viability of the business? Which is why I assume most are still on mainframes. (Never worked at a bank)
Re:Jepsen: Datomic Pro 1.0.7075 by harperlee on Thursday May 16, 2024 @12:51AM (#40375292)
Banks exist since a long time before computers existed, and thus have ways to detect and correct errors that are not purely technological (such as double entry bookkeeping, backups, supporting documentation, different processes). So a bank can survive a db doing nasty things on a low enough frequency such that is not detected beforehand, so they don’t need to “prove in coq” that everything is correct.
Re:Jepsen: Datomic Pro 1.0.7075 by Foobar8568 on Thursday May 16, 2024 @01:03AM (#40375355)
Anyone who has worked in a bank and is glad of its solutions is either a fool, clueless or politician.

Banks have to answer to regulation and they do by doing the bare minimum they can get away with.

Re:Jepsen: Datomic Pro 1.0.7075 by cdchn on Thursday May 16, 2024 @02:47AM (#40375828)
Mistakes don't threaten them that much. When Equifax (admittedly not a bank) can make massive negligent fuckups and still be a going concern there isn't much heat there. Most fuckups a bank make can be unwound.
Re:Jepsen: Datomic Pro 1.0.7075 by raverbashing on Thursday May 16, 2024 @09:05AM (#40377886)
Banks are not usually ran by people who go for the first fad.js they see ahead; they usually also can think ahead further than 5 min.

Also, I'm sure they engineer their systems so that every operation and action is logged multiple times and have multiple redundancy factors.

A main transaction DB will not be a "single source of truth" for any event. It will be the main source of truth, but the ledger you see in your online bank is only a simplified view into it.

Re:Jepsen: Datomic Pro 1.0.7075 by boxed on Thursday May 16, 2024 @05:45PM (#40383638)
Mainframe systems aren't tested to the Jepsen level of standard just because they were build on mainframes in the 70s/80s. In fact, quite the opposite.
Re:Jepsen: Datomic Pro 1.0.7075 by belter on Wednesday May 15, 2024 @06:02PM (#40372953)
> I was also surprised that Jepsen didn’t find critical bugs.

From the report..."...we can prove the presence of bugs, but not their absence..."

Re:Jepsen: Datomic Pro 1.0.7075 by vasco on Wednesday May 15, 2024 @06:36PM (#40373236)
That's consistent with the usual definition of "finding" anything.
Re:Jepsen: Datomic Pro 1.0.7075 by cdchn on Wednesday May 15, 2024 @08:10PM (#40373850)
"Absence of evidence is not evidence of absence."
Re:Jepsen: Datomic Pro 1.0.7075 by andreareina on Wednesday May 15, 2024 @09:19PM (#40374260)
If you've looked, it is. The more and the better you look, the better evidence it is.
Re:Jepsen: Datomic Pro 1.0.7075 by kelseyfrog on Wednesday May 15, 2024 @09:50PM (#40374456)
If you run it through bayes theorem, it adjusts the posterior very little.
Re:Jepsen: Datomic Pro 1.0.7075 by cwillu on Thursday May 16, 2024 @03:22PM (#40382092)
If a test almost always finds something, then the failure of that test to find something is strong evidence.
Re:Jepsen: Datomic Pro 1.0.7075 by kelseyfrog on Thursday May 16, 2024 @04:06PM (#40382543)
I'd be happy to see you numbers for estimated likelihood, prior, and marginal probability if you have them. I'm curious what you get.
Re:Jepsen: Datomic Pro 1.0.7075 by kelseyfrog on Wednesday May 15, 2024 @09:49PM (#40374447)
Thank you. I've updated my initial guess of p(critical bugs | did not find critical bugs) from 0.5 to 0.82 given my estimate of likelihood and base rates.
Re:Jepsen: Datomic Pro 1.0.7075 by nine_k on Thursday May 16, 2024 @02:25PM (#40381556)
s/evidence/proof/.

Evidence of absence ("we searched really carefully and nothing came up") does update the Bayesian priors significantly, so the probability of absence of bugs can now be estimated as much higher.

Re:Jepsen: Datomic Pro 1.0.7075 by jupp0r on Wednesday May 15, 2024 @09:06PM (#40374191)
In practical terms, if you are a database and Jepsen doesn't find any bugs, that's as much assurance as you are going to get in 2024 short of formal verification.
Re:Jepsen: Datomic Pro 1.0.7075 by pests on Wednesday May 15, 2024 @11:58PM (#40375070)
The work antithesis has been doing here has me really excited as well.
Re:Jepsen: Datomic Pro 1.0.7075 by stuarthalloway on Thursday May 16, 2024 @11:19AM (#40379472)
Formal verification is very powerful but still not full assurance. Fun fact: Testing and monitoring of Datomic has sometimes uncovered design flaws in underlying storages that formal verification missed.
Re:Jepsen: Datomic Pro 1.0.7075 by nine_k on Thursday May 16, 2024 @02:22PM (#40381525)
What kind of flaws? I would expect performance problems.
Re:Jepsen: Datomic Pro 1.0.7075 by jupp0r on Thursday May 16, 2024 @04:37PM (#40382813)
To start with, you usually perform verification on a behavioral model and not on the code itself. This opens up the possibility that there are behavioral differences between the code itself and the model which wouldn't be caught.
Re:Jepsen: Datomic Pro 1.0.7075 by nine_k on Thursday May 16, 2024 @05:01PM (#40383082)
Could you offer an example?
Re:Jepsen: Datomic Pro 1.0.7075 by jupp0r on Friday May 17, 2024 @01:42PM (#40392393)
If you work through the TLA+ tutorial[1] it will help you get a good idea of the benefits and limitations of verification.

[1] https://learntla.com/

Re:Jepsen: Datomic Pro 1.0.7075 by asa400 on Thursday May 16, 2024 @02:36PM (#40381688)
Is there anything I can read about what capabilities Datomic requires of the underlying storages it uses?
Re:Jepsen: Datomic Pro 1.0.7075 by fiatjaf on Thursday May 16, 2024 @05:46AM (#40376635)
What bank is that, if I may ask?
Re:Jepsen: Datomic Pro 1.0.7075 by swah on Thursday May 16, 2024 @06:01AM (#40376700)
First brazilian fully digital bank, got pretty big in a decade.

I'd love to hear the story from the first engineers, how they got support for this, etc. They never did tech blog posts though...

Re:Jepsen: Datomic Pro 1.0.7075 by jonahbenton on Thursday May 16, 2024 @08:15AM (#40377384)
There are some videos, both of the start and of their progress. Some of the most impressive work I have ever seen, remarkable.
Re:Jepsen: Datomic Pro 1.0.7075 by stuarthalloway on Thursday May 16, 2024 @07:12AM (#40377042)
Ed Wible is a founder of Nubank and chose Datomic. He and Lucas Cavalcanti gave a talk on it at Clojure/conj 2014.

https://www.youtube.com/watch?v=7lm3K8zVOdY

Re:Jepsen: Datomic Pro 1.0.7075 by puredanger on Thursday May 16, 2024 @10:51AM (#40379144)
Ed's post when Cognitect joined Nubank is still a great read: https://building.nubank.com.br/welcoming-cognitect-nubank/
Re:Jepsen: Datomic Pro 1.0.7075 by loevborg on Thursday May 16, 2024 @05:50AM (#40376655)
Re:Jepsen: Datomic Pro 1.0.7075 by SOLAR_FIELDS on Thursday May 16, 2024 @11:36AM (#40379662)
Given that Rich Hickey designed this database the outcome is perhaps unsurprising. What a fabulous read - anytime I feel like I’m reasonably smart it’s always good to be humbled by a Jensen analysis
Re:Jepsen: Datomic Pro 1.0.7075 by nine_k on Thursday May 16, 2024 @02:20PM (#40381504)
A good design does not guarantee the absence of implementation bugs. But a good design can make introducing bugs harder / less probable. This must be the case, and then it's a case to study and maybe emulate.