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:
Then the same node misses a gossip message because the gossiper is seen as disabled: