3 ms·
How is it guaranteed that a transaction will make progress? It sounds like every (initial state -> a,b,c,d),(initial state = a,b,c,d; modified state -> a,B,C,d)
by angry_octet 8y ago
How is it guaranteed that a transaction will make progress? It sounds like every (initial state -> a,b,c,d),(initial state = a,b,c,d; modified state -> a,B,C,d) can be aborted by another transaction? Is there some queuing system for transactions, or timed locks?
And for distributed shared systems, not all shards will have all of (a,b,c,d) in order to make a decision.
If one of the shards fails (i.e. write error) how would the transaction on the other shards abort? If there was shard redundancy I can see this becoming less likely, but by no means impossible.
Sure, maybe they can roll back transactions, but that presents a time window of wrong state to the world.
- abadid 8y agoOLLP by itself is not guaranteed to make progress, but it is easy to prevent starvation via exerting more control at the preprocessing layer. The three papers to read related to this subject are: (1) http://www.cs.umd.edu/~abadi/papers/determinism-vldb10.pdf http://www.cs.umd.edu/~abadi/papers/determinism-vldb10.pdf (2) http://www.cs.umd.edu/~abadi/papers/calvin-tods14.pdf http://www.cs.umd.edu/~abadi/papers/calvin-tods14.pdf (3) http://www.cs.umd.edu/~abadi/papers/determinism-eval.pdf http://www.cs.umd.edu/~abadi/papers/determinism-eval.pdf Aborts due to OLLP are state-based aborts, so other shards fail via the conditional logic described in the blog post.