[ https://issues.apache.org/jira/browse/CASSANDRA-15059?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16812971#comment-16812971 ]
Ariel Weisberg commented on CASSANDRA-15059: -------------------------------------------- It will and it won't fix it. We will know really quickly if it doesn't work because it's going to fail whatever it was doing. By learning the exceptions we will be able to evaluate whether they are correct. Major changes like preconditions would be 4.0 only so if we break it we at least won't be breaking it in production anywhere. Making the API less fragile is also helps reduce the surface area for people to use Gossiper incorrectly. I don't see why we shouldn't do that. > Gossiper#markAlive can race with Gossiper#markDead > -------------------------------------------------- > > Key: CASSANDRA-15059 > URL: https://issues.apache.org/jira/browse/CASSANDRA-15059 > Project: Cassandra > Issue Type: Bug > Components: Cluster/Gossip > Reporter: Blake Eggleston > Assignee: Blake Eggleston > Priority: Normal > > The Gossiper class is not threadsafe and assumes all state changes happen in > a single thread (the gossip stage). Gossiper#convict, however, can be called > from the GossipTasks thread. This creates a race where calls to > Gossiper#markAlive and Gossiper#markDead can interleave, corrupting gossip > state. Gossiper#assassinateEndpoint has a similar problem, being called from > the mbean server thread. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org