There is a bad connection (the story of the in-doubt distributed transactions)

The paper shows how an in-doubt transaction occurs and how it can be solved.


The easiest and the best is to work with centralized databases. However, in practice, sometimes we have to work with distributed databases. Then we often use replication, synchronous or asynchronous. A synchronous replication is a kind of distributed transaction; however, we often need a distributed transaction in a distributed database, even outside the replication. A distributed transaction is supported by a two phase commit protocol. This protocol enables a distributed transaction to be consistently performed, even with occasional failure of communication links (and / or servers that take part in that distributed transaction). Unfortunately, sometimes the connections (or servers) are so bad that the distributed transaction is in a dilemma (in-doubt) and then we have to intervene manually.