apache/cassandra · info

Stopping gossip by operator request

Error message

Stopping gossip by operator request

What it means

This is a WARN log emitted by StorageService.stopGossiping() when an operator explicitly disables gossip on a running node (typically via JMX/nodetool 'disablegossip'). It is informational: the node stops participating in cluster membership changes. Before stopping, the method refuses to proceed with IllegalStateException if the node is not yet in NORMAL status, and warns if native transport is still serving clients, since disabling gossip while serving traffic can cause consistency and routing problems.

Source

Thrown at src/java/org/apache/cassandra/service/StorageService.java:547

    public void register(IEndpointLifecycleSubscriber subscriber)
    {
        lifecycleSubscribers.add(subscriber);
    }

    public void unregister(IEndpointLifecycleSubscriber subscriber)
    {
        lifecycleSubscribers.remove(subscriber);
    }

    // should only be called via JMX
    public void stopGossiping()
    {
        if (isGossipRunning())
        {
            if (!isNormal() && joinRing)
                throw new IllegalStateException("Unable to stop gossip because the node is not in the normal state. Try to stop the node instead.");

            logger.warn("Stopping gossip by operator request");

            if (isNativeTransportRunning())
            {
                logger.warn("Disabling gossip while native transport is still active is unsafe");
            }

            Gossiper.instance.stop();
        }
    }

    // should only be called via JMX
    public synchronized void startGossiping()
    {
        if (!isGossipRunning())
        {
            checkServiceAllowedToStart("gossip");

            logger.warn("Starting gossip by operator request");

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. If the disable was intentional, no action needed; re-enable with nodetool enablegossip when done.
  2. If accidental, immediately run 'nodetool enablegossip' to rejoin gossip.
  3. Before disabling gossip, stop native transport first ('nodetool disablebinary') to avoid serving traffic while isolated.
  4. Verify the node is in NORMAL state first; if not, use 'nodetool stop' / full node shutdown instead.

Example fix

// before
nodetool disablegossip  # while node serves clients
// after
nodetool disablebinary
nodetool disablegossip
# ... maintenance ...
nodetool enablegossip
nodetool enablebinary
Defensive patterns

Strategy: validation

Validate before calling

boolean safeToStopGossip = storageService.isGossipRunning()
    && storageService.isNativeTransportRunning() == false; // stop binary first if true

Try / catch

try { storageService.stopGossiping(); } catch (IllegalStateException e) { /* node not NORMAL; stop the node instead */ }

Prevention

When it happens

Trigger: Operator invokes stopGossiping() (e.g. nodetool disablegossip or JMX stopTransports path) while isGossipRunning() is true and the node has passed the not-normal/joinRing guard.

Common situations: Ops debugging sessions where gossip is suspected of misbehaving; maintenance runbooks that disable gossip temporarily; accidental disablegossip invocations leaving a node silent in the cluster while client traffic continues.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/dbc0a4c0add1e42b. Report an issue: GitHub.