I am reading Cassandra: The Definitive Guide, 3rd edition. It has the following text:
"The serial consistency level can apply on reads as well. If Cassandra detects that a query is reading data that is part of an uncommitted transaction, it commits the transaction as part of the read, according to the specified serial consistency level."
Why a read is committing an uncommitted transaction and doesn't it interfere with ability of the writer to rollback?
When you say "It is committing a transaction from another in-flight mutation when it performed the read", do you mean that "Other in-flight transaction has progressed past the "Propose/Accept" stage by the initiator of that transaction.
If that is case,
- Can I say, once a transaction has gone past "Propose/Accept" stage, it does not matter who performs "Commit/Acknowledge" (.ie initiator of that transaction or some other read) because even the initiator of that transaction can't rollback after 3rd stage
- Regarding isolation, I thought read will return the previously committed values. but here the read seems to detect the "uncommitted read" and tries to commit it and return it. Isn't this against Isolation guarantee?
- what happens if the read was not able to commit, will it fail or will it return the previously committed values?