Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-11116

Gossiper#isEnabled is not thread safe

    XMLWordPrintableJSON

Details

    • Critical

    Description

      Gossiper#isEnabled() relies on the presence of scheduledGossipTask, which is not final nor volatile. As a consequence, when such method is called on a different thread, i.e. the gossip stage thread, it is sometimes detected as not enabled, causing particularly obscure failures.

      This is shown by the following logs. First the gossiper is started:

      1 TRACE [Thread-29] 2016-02-03 19:21:31,232  Gossiper.java (line 1310) gossip started with generation 1454527291
      

      Then the same node misses a gossip message because the gossiper is seen as disabled:

      1 TRACE [GossipStage:1] 2016-02-03 19:21:32,016  GossipDigestSynVerbHandler.java (line 44) Ignoring GossipDigestSynMessage because gossip is disabled
      

      Attachments

        Activity

          People

            aweisberg Ariel Weisberg
            sbtourist Sergio Bossa
            Ariel Weisberg
            Caleb Rackliffe
            Votes:
            1 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: