[
https://issues.apache.org/jira/browse/CASSANDRA-5692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13694996#comment-13694996
]
Jason Brown commented on CASSANDRA-5692:
----------------------------------------
On the whole, lgtm, but I'm not sure about the InterruptedException part. From
my reading of the CDL javadoc, the IE is thrown "if the current thread is
interrupted while waiting". This is indicates that the waiting thread, the one
calling versionLatch.await in your code, is being interrupted, not the
Handshake thread. Everywhere else in OTC where we catch IE, we throw an
AssertionError - basically stop execution of the method and bail. I'm not sure
we would we do something different in handshakeVersion(), as if we got an
interrupt I think we'd want to bail out, as well, and try to to finish
connecting to the remote node.
Also, as a minor nit, I moved the versionLatch.countDown() into a finally
block, as we want to unblock the waiting thread regardless of success or
failure to read the version from the socket.
> Race condition in detecting version on a mixed 1.1/1.2 cluster
> --------------------------------------------------------------
>
> Key: CASSANDRA-5692
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5692
> Project: Cassandra
> Issue Type: Bug
> Affects Versions: 1.1.9, 1.2.5
> Reporter: Sergio Bossa
> Priority: Minor
> Attachments: 5692-0005.patch, 5692-0006.patch
>
>
> On a mixed 1.1 / 1.2 cluster, starting 1.2 nodes fires sometimes a race
> condition in version detection, where the 1.2 node wrongly detects version 6
> for a 1.1 node.
> It works as follows:
> 1) The just started 1.2 node quickly opens an OutboundTcpConnection toward a
> 1.1 node before receiving any messages from the latter.
> 2) Given the version is correctly detected only when the first message is
> received, the version is momentarily set at 6.
> 3) This opens an OutboundTcpConnection from 1.2 to 1.1 at version 6, which
> gets stuck in the connect() method.
> Later, the version is correctly fixed, but all outbound connections from 1.2
> to 1.1 are stuck at this point.
> Evidence from 1.2 logs:
> TRACE 13:48:31,133 Assuming current protocol version for /127.0.0.2
> DEBUG 13:48:37,837 Setting version 5 for /127.0.0.2
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira