Hacker News new | ask | show | jobs
by threatofrain 1175 days ago
> but for op-based CRDTs if you fail to deliver a message it's not fine, the information in that message is lost forever, it won't be included in the next message, and (even if the partition is eventually healed) the ultimate state will not converge

Can't you just have every node keep a history of ops, and when nodes communicate with each other they can compare clocks to know which ops to re-deliver? We should also be able to enforce idempotency this way.

1 comments

in theory yes, in practice no

basically this makes peer connections stateful, but maintaining that state accurately is very difficult, especially when considering tomography changes in the system

in fact if you can manage that state correctly, you've solved a problem that's roughly the same as the problem that CRDTs solve

(in other words, you're almost certainly not gonna solve that problem correctly)