DowngradingConsistencyRetryPolicy Class |
Note: This API is now obsolete.
BEWARE: This policy may retry queries using a lower consistency level than the one initially requested. By doing so, it may break consistency guarantees. In other words, if you use this retry policy, there are cases (documented below) where a read at Quorum may not see a preceding write at Quorum. Do not use this policy unless you have understood the cases where this can happen and are OK with that. It is also highly recommended to always wrap this policy into LoggingRetryPolicy to log the occurrences of such consistency break. This policy behaves in the same way as the DefaultRetryPolicy policy, except for the following cases:
The reasoning behind this retry policy is the following one. If, based on the information the Cassandra coordinator node returns, retrying the operation with the initially requested consistency has a change to succeed, do it. Otherwise, if based on these informations we know the initially requested consistency level cannot be achieve currently, then:
In other words, this policy : the idea that if the requested consistency level cannot be achieved, the next best thing for writes is to make sure the data is persisted, and that reading something is better than reading nothing, even if there is a risk of reading stale data.
Namespace: Cassandra
[ObsoleteAttribute("This retry policy has been deprecated and will be removed in future versions. See the upgrade guide (Docs » Upgrade Guide) for more information")] public class DowngradingConsistencyRetryPolicy : IRetryPolicy
The DowngradingConsistencyRetryPolicy type exposes the following members.
Name | Description | |
---|---|---|
OnReadTimeout |
Defines whether to retry and at which consistency level on a read timeout.
This method triggers a maximum of one retry. If less replica responsed than required by the consistency level (but at least one replica did respond), the operation is retried at a lower consistency level. If enough replica responded but data was not retrieve, the operation is retried with the initial consistency level. Otherwise, an exception is thrown. | |
OnUnavailable |
Defines whether to retry and at which consistency level on an unavailable
exception. This method triggers a maximum of one retry. If at least one replica is know to be alive, the operation is retried at a lower consistency level. | |
OnWriteTimeout |
Defines whether to retry and at which consistency level on a write timeout.
This method triggers a maximum of one retry. If writeType == WriteType.BATCH_LOG, the write is retried with the initial consistency level. If writeType == WriteType.UNLOGGED_BATCH and at least one replica acknowleged, the write is retried with a lower consistency level (with unlogged batch, a write timeout can always mean that part of the batch haven't been persisted at' all, even if receivedAcks > 0). For other writeType, if we know the write has been persisted on at least one replica, we ignore the exception. Otherwise, an exception is thrown. |