Jepsen: ParticleDB 1.1.4
Posted by aphyr 7 hours ago
Comments
Comment by the_duke 3 hours ago
> ParticleDB 1.1.4 claimed to be a Postgres-compatible database ... Instead, we found a library of confusion
> exhibited frequent, profound transactional anomalies in essentially every way we could measure. We routinely observed the loss of committed writes, internal consistency violations, G1a (Aborted Read), G1b (Intermediate Read), and P4 (Lost Update). In the append workload, successfully appended values would routinely disappear from later reads of a given key. Our test suite inferred every kind of cyclic anomaly including G0, G1c, G-Single, and G2-item, but many of these can be attributed to more basic issues, like write loss. These issues occurred with a single server and without faults, and affected every transaction mode, interface, and WAL mode tested
Comment by nikez96 1 hour ago
Our recent Jepsen runs have not surfaced any transactional anomalies in the supported modes that provide isolation guarantees. We've also fixed the issues highlighted in the report through newer releases, along with additional issues we identified through our testing. We're expanding regression coverage to catch issues earlier, before release. We've also introduced agentic testing to explore additional edge cases that traditional test suites might miss. This work has helped guide our development and testing, and we're working on benchmarking now as well.
Comment by tasuki 3 minutes ago
Comment by Mawr 39 minutes ago
Comment by throwaway737488 21 minutes ago
No one in their right mind will use this product ever.
Comment by jarym 2 hours ago
Comment by BiraIgnacio 1 hour ago
Alas! It turns out it's really hard to do it right.
Comment by random3 2 hours ago
Comment by d5wiz 2 hours ago
Its also faster than Redis for KV, also numbers show this should be top on clickbench, official submission is in progress
Comment by fabian2k 2 hours ago
Comment by rat9988 2 hours ago
Comment by cwillu 2 hours ago
It makes mongodb from the report a decade ago look good.
Comment by rat9988 1 hour ago
Comment by fabian2k 2 hours ago
Comment by foltik 2 hours ago
Please try to resist the urge of being a meat proxy.
Comment by jen20 2 hours ago
Jepsen is a fantastic tool - and one every database engineering team should have in their arsenal - but it proves the presence of bugs, not the absence of them. It is not formal verification, just a more rigorous form of existential testing.
Comment by foltik 1 hour ago
> ParticleDB’s home page advertised that ParticleDB was “formally proven” with a TLA+ proof. However, during our collaboration no TLA+ specification was available.
Comment by throwaway737488 10 minutes ago
Comment by d1l 2 hours ago
I mean did you see the "primary key equality" thing? Holy shit.
Comment by kubelsmieci 2 hours ago
You can't be sure until they test it again
Comment by the_duke 2 hours ago
Comment by tensegrist 2 hours ago
Comment by edude03 3 hours ago
Definitely seems worse than usual (looking back most databases seem to have <10 issues total, and the majority seem "mild") - since it's a database for AI was it also likely vibe-coded or just new? Then again even if new, I wouldn't expect so many issues in a stable release
Comment by wofo 1 hour ago
I guess that's what happens when you vibecode a database...
Comment by thebeardisred 15 minutes ago
It takes gumption to build a new storage engine. I remember when etcd[0] first made it's way into @aphyr's cross-hairs. We took all of the input very seriously because we knew that a data store which is untrustworthy is useless.
Resolving these issues likely won't be easy, but if you can get to the point where you walk away from Jepsen unscathed the trust in your software will be greatly amplified.
0: https://aphyr.com/posts/316-call-me-maybe-etcd-and-consul
Comment by throwaway737488 5 minutes ago
Comment by amluto 1 hour ago
Some software is correct by construction, in the sense that the overall design makes sense and the cases that don’t work are generally local bugs.
Some software is incorrect by construction, and it tends to work by some combination of luck and by carefully working around the incorrect design in most or all code paths that could expose the incorrectness. (AI can be quite effective at finding the relevant places to insert workarounds.)
ParticleDB sounds like the latter category. Plenty of large projects have portions that are in one category and portions that are in another.
As an aside, for the last day or two, I’ve been contemplating that the Linux kernel’s handling of folio pinning seems to be in the incorrect-by-construction category. Good times. No, I haven’t found a hard-to-fix bug that I would credibly characterize as a security or likely accidental corruption issue [0], but this seems mostly like luck.
[0] I do appear to have re-discovered a bug that some massive Anthropic dump from a couple months ago also found, and it’s getting fixed. If your application does “fixed” io_uring I/O or certain types of iommu-based or maybe RDMA on a memfd, you might plausibly encounter it on rare occasions. I didn’t bother making a reproducer.
Comment by mxey 2 hours ago
Comment by jonstewart 1 hour ago
Comment by kantselovich 4 minutes ago
Comment by antirez 2 hours ago
Comment by aphyr 2 hours ago
Comment by antirez 15 minutes ago
Comment by Powdering7082 5 hours ago
Perhaps they meant formerly, probably just a speech to text problem
Comment by lumost 3 hours ago
Comment by hibikir 3 hours ago
Comment by wavemode 3 hours ago
Comment by t3ntxcles 2 hours ago
Comment by semiquaver 2 hours ago
(Edit for clarity: this is quoted from the linked article)
You could write predicates over non-existent columns:
root=> SELECT * FROM t
WHERE definitely_not_a_column = 4;
a | b
---+----
4 | 5
(1 row)
Or ask if 4 = 5
root=> SELECT * FROM t WHERE 4 = 5;
a | b
---+----
5 | 6
(1 row)
Good on them for being good sports I guess, but after reading this I would never touch a piece of software built by anyone involved with this company. The sheer hubris of their claims combined with the specific reality of their broken garbage software (with the contradicted marketing claims and hallucinated documentation) is literally breathtaking.It must have been darkly amusing to see all these defect tickets coming in, only for them to frantically shovel each one to increasingly overworked LLM agents to apply pig-lipstick while the humans in charge oh-so-slowly start to realize their software quality is not quite what their glazing agents had been telling them and that what they have on their hands is basically sub-mongo-quality slop. What a world we live in, huh?
Comment by mrkeen 53 minutes ago
I complain that mainstream SQL engines have no problem returning less than the total number of rows if you first query WHERE column = NULL and then query WHERE column <> NULL. Your example queries remind me of that.
[1] https://medium.com/dailyjs/the-why-behind-the-wat-an-explana...
Comment by CodesInChaos 25 minutes ago
Comment by semiquaver 43 minutes ago
> WHERE column = NULL and then query WHERE column <> NULL
With respect, your statement seems to indicate that you simply haven’t heard of or don’t understand the three-valued-logic semantics behind SQL.NULL means what it means and is conceptually foundational to SQL. Comparing it to anything returns UNKNOWN, the “third value” besides true and false. And WHERE needs a TRUE predicate. So your implied fault that they “have no problem“ really is just a matter of you not understanding the tool you are complaining about.
To match against the NULLness of a value you must use special purpose operators. In this case
WHERE column IS NULL OR column IS NOT NULLComment by semiquaver 1 hour ago
$180K in CA for someone who reports directly to the head of engineering is not even top of market for Topeka, KS.
Comment by jwr 21 minutes ago
Comment by jsyang00 4 minutes ago
Comment by CodesInChaos 3 hours ago
Especially now, where you could probably just ask AI to adapt the existing suites to the cosnistency claims this database makes, and get something useful out of it. While certainly not as good as a professional test, I'd expect it to at least find some low hanging fruits before going for the expensive and public official Jepsen test.
Comment by yla92 2 hours ago
"Orkes said they ran Jepsen’s existing Postgres test harness to find and resolve issues in ParticleDB prior to this work. However, that same test harness failed immediately when run against ParticleDB 1.1.4. Orkes also stated they tested ParticleDB with SQLancer, which generates far more complex queries than the ones we tested. It is therefore perplexing that nearly every feature we tested exhibited glaring errors, and that our findings seemed to come as a surprise."
Comment by mxey 2 hours ago
Comment by pluto_modadic 3 hours ago
Comment by _bohm 3 hours ago
Comment by d5wiz 2 hours ago
SDKs are MIT license CLI tools and Studio will be also be MIT License
Server is not open source for now but free for developers
Comment by foltik 2 hours ago
Afraid to show the slop?
Comment by semiquaver 19 minutes ago
Comment by throwaway737488 1 hour ago
This is such a huge reputational hit, seems like a terrible outcome for a Series B company funded by big name VCs
What does this say about their main product?
Comment by shoo 16 minutes ago
I can see it happening if they genuinely had no idea of how defective / non-existent their internal QA & testing processes were.
Comment by yipinwong 2 hours ago
Comment by Thaxll 3 hours ago
"Written in Rust · Formally Verified · PostgreSQL Compatible"
Comment by stacktraceyo 2 hours ago
Comment by Powdering7082 4 hours ago
EDIT: It's up now
Comment by quietbarn 2 hours ago
Comment by stevenburg 1 hour ago
Comment by pullrun 10 minutes ago