You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jeremy Hanna (JIRA)" <ji...@apache.org> on 2018/05/11 15:03:01 UTC
[jira] [Updated] (CASSANDRA-5830) Paxos loops endlessly due to
faulty condition check
[ https://issues.apache.org/jira/browse/CASSANDRA-5830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jeremy Hanna updated CASSANDRA-5830:
------------------------------------
Labels: LWT paxos (was: paxos)
> Paxos loops endlessly due to faulty condition check
> ---------------------------------------------------
>
> Key: CASSANDRA-5830
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5830
> Project: Cassandra
> Issue Type: Bug
> Affects Versions: 2.0 beta 2
> Reporter: Soumava Ghosh
> Assignee: Soumava Ghosh
> Priority: Major
> Labels: LWT, paxos
> Fix For: 2.0.0
>
>
> Following is the code segment (StorageProxy.java:361) which causes the issue:
> Start is the start time of the paxos, is always less than the current system time, and therefore the negative difference is always less than the timeout.
> {code:title=StorageProxy.java|borderStyle=solid}
> private static UUID beginAndRepairPaxos(long start, ByteBuffer key, CFMetaData metadata, List<InetAddress> liveEndpoints, int requiredParticipants, ConsistencyLevel consistencyForPaxos)
> throws WriteTimeoutException
> {
> long timeout = TimeUnit.MILLISECONDS.toNanos(DatabaseDescriptor.getCasContentionTimeout());
> PrepareCallback summary = null;
> while (start - System.nanoTime() < timeout)
> {
> long ballotMillis = summary == null
> ? System.currentTimeMillis()
> : Math.max(System.currentTimeMillis(), 1 + UUIDGen.unixTimestamp(summary.inProgressCommit.ballot));
> UUID ballot = UUIDGen.getTimeUUID(ballotMillis);
> {code}
> Here, the paxos gets stuck when PREPARE returns 'true' but with inProgressCommit. The code in StorageProxy.java:beginAndRepairPaxos() then tries to issue a PROPOSE and COMMIT for the inProgressCommit, and if it repeatedly receives 'false' as a PREPARE_RESPONSE it gets stuck in an endless loop until PREPARE_RESPONSE is true.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org