Details
-
Bug
-
Status: Resolved
-
Low
-
Resolution: Duplicate
-
None
-
None
-
Low
Description
Since EACH_QUORUM writes require a certain number of acknowledgements from nodes in each DC and WriteTimeoutException only reports on the total number of acknowledgements received, the message can be misleading. Furthermore, if the total number of acknowledgements exceeds or equals the total number of required acknowledgements, which can happen with EACH_QUORUM writes, the number of acknowledgements is changed to required - 1 (lines 102-103, https://github.com/apache/cassandra/blob/cassandra-3.11/src/java/org/apache/cassandra/service/AbstractWriteResponseHandler.java), which is incorrect.
Consider a 2 DC cluster with 5 nodes in each cluster and a replication factor of 3 in each cluster (for the relevant keyspace). A write at consistency level EACH_QUORUM might receive acknowledments from 3 nodes in one DC and 1 node from the other DC before timing out.
Then the WriteTimeoutException message will specify that it received 3 acknowledments out of 4 required, which is incorrect and misleading.
Attachments
Issue Links
- duplicates
-
CASSANDRA-14738 EACH_QUORUM will report incorrect ACK count on timeout
- Open