[ https://issues.apache.org/jira/browse/CASSANDRA-9649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14602634#comment-14602634 ]
Stefania commented on CASSANDRA-9649: ------------------------------------- Great, thank you. > Paxos ballot in StorageProxy could clash > ---------------------------------------- > > Key: CASSANDRA-9649 > URL: https://issues.apache.org/jira/browse/CASSANDRA-9649 > Project: Cassandra > Issue Type: Bug > Reporter: Stefania > Assignee: Stefania > Priority: Minor > > This code in {{StorageProxy.beginAndRepairPaxos()}} takes a timestamp in > microseconds but divides it by 1000 before adding one. So if the summary is > null, ballotMillis would be the same for up to 1000 possible state timestamp > values: > {code} > long currentTime = (state.getTimestamp() / 1000) + 1; > long ballotMillis = summary == null > ? currentTime > : Math.max(currentTime, 1 + > UUIDGen.unixTimestamp(summary.mostRecentInProgressCommit.ballot)); > UUID ballot = UUIDGen.getTimeUUID(ballotMillis); > {code} > {{state.getTimestamp()}} returns the time in micro seconds and it ensures to > add one microsecond to any previously used timestamp if the client sends the > same or an older timestamp. > Initially I used this code in {{ModificationStatement.casInternal()}}, > introduced by CASSANDRA-9160 to support cas unit tests, but occasionally > these tests were failing. It was only when I ensured uniqueness of the ballot > that the tests started to pass reliably. > I wonder if we could ever have the same issue in StorageProxy? > cc [~jbellis] and [~slebresne] for CASSANDRA-7801 -- This message was sent by Atlassian JIRA (v6.3.4#6332)