cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergio Bossa (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-14503) Internode connection management is race-prone
Date Thu, 07 Jun 2018 12:57:00 GMT
Sergio Bossa created CASSANDRA-14503:

             Summary: Internode connection management is race-prone
                 Key: CASSANDRA-14503
             Project: Cassandra
          Issue Type: Bug
          Components: Streaming and Messaging
            Reporter: Sergio Bossa

Following CASSANDRA-8457, internode connection management has been rewritten to rely on Netty,
but the new implementation in {{OutboundMessagingConnection}} seems quite race prone to me,
in particular on those two cases:

* {{#finishHandshake()}} racing with {{#close()}}: i.e. in such case the former could run
into an NPE if the latter nulls the {{channelWriter}} (but this is just an example, other
conflicts might happen).
* Connection timeout and retry racing with state changing methods: {{connectionRetryFuture}}
and {{connectionTimeoutFuture}} are cancelled when handshaking or closing, but there's no
guarantee those will be actually cancelled (as they might be already running), so they might
end up changing the connection state concurrently with other methods (i.e. by unexpectedly
closing the channel or clearing the backlog).

Overall, the thread safety of {{OutboundMessagingConnection}} is very difficult to assess
given the current implementation: I would suggest to refactor it into a single-thread model,
where all connection state changing actions are enqueued on a single threaded scheduler, so
that state transitions can be clearly defined and checked.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message