Live data from Hacker News

Corrosion

fly.io

101–109 of 109 posts

Re: Corrosion

#104
woof

vlcn-io/cr-sqlite definitely built by someone who doesn't understand the fundamentals of the space

> As of cr-sqlite 0.15, the CRDT for an existing row being update is this: (1) Biggest col_version wins

col_version is definitely something, but it isn't a logical timestamp!

--

https://github.com/superfly/corrosion/blob/main/doc/crdts.md

> Crsqlite specifically uses a "lamport timestamp" which, if you squint at from a distance, could be most concisely boiled down to a monotonically increasing counter.

lamport clocks can be boiled down to monotonically-increasing counters _per physical node in the system_, not per logical row/entity in the data model

so if you want to do conflict resolution based on logical (lamport) clocks you need to evaluate/resolve concurrent modifications according to site-specific logical clocks and their histories -- not just raw integers

which 100% vlcn.io does not do

> destroyed comes before started and so started is "bigger"

eep. good luck!

Re: Corrosion

#106

Earlier quoted context omitted.

YES. THIS. ALWAYS! Huge pet peeve. At least this one has a date somewhere (at the bottom, "last updated Oct 22, 2025").

Saw that at the bottom, but I more want to know when it was originally published

It was published when the date at the bottom says it was.

Re: Corrosion

#108

Earlier quoted context omitted.

It was published when the date at the bottom says it was.

Doesn't it say when it was last updated?

Same difference. This hasn't been updated at all. Peter and I wrote it just a couple days ago.

Re: Corrosion

#109
post #21

in case people don't read all the way to the end, the important takeaway is "you simply can't afford to do instant global state distribution" - you can formal method and Rust and test and watchdog yourself as much as you want, but you simply have to stop doing that or the unknown unknowns will just keep taking you down.

I mean, the thing we're saying is that instant global state with database-style consensus is unworkable. Instant state distribution though is kind of just... necessary? for a platform like ours. You bring up an app in Europe, proxies in Asia need to know about it to route to it. So you say, "ok, well, they can wait a minute to learn about the app, not the end of the world". Now: that same European instance goes down…

apologies for misinterpreting it. that said, I would be very interested if in a couple of years you write a followup post about whether you have found that global ~instantaneous state is workable under the right circumstances or not.
Post reply on HN