> there is no foolproof way of implementing that pseudocode's "has_seen(message.id)" method
Wait why? Just because you'd have to store the list of seen messages theoretically indefinitely?
Wait why? Just because you'd have to store the list of seen messages theoretically indefinitely?
What they've done is shift the point of failure from something less reliable (client's network) to something more reliable (their rocksdb approach) - reducing duplicates but not guaranteeing exactly once processing.
but if you can persist a monotonic sequence number, thats gets you pretty far. we use tcp all the time even though its has no magic answer to distributed consensus (and uses a super-weak checksum). 2pc doesnt guarantee progress and/or consistency either and its pretty effective.