apache/cassandra · warning

Error while getting seed node list

Error message

Error while getting seed node list: {}

What it means

Gossiper periodically refreshes its seed list from the configured SeedProvider. If the provider throws (e.g., SimpleSeedProvider given invalid YAML, or a third-party provider failing), the code inspects the throwable for JVM stability and logs this warning, returning null to signal the refresh failed rather than crashing gossip.

Solutions

  1. Validate cassandra.yaml seed_provider syntax; fix invalid entries and restart.
  2. Check the third-party seed provider's connectivity/credentials if a dynamic provider is used.
  3. Inspect the accompanying exception message in the log to identify the exact provider failure.
  4. Revert a recent seed config change and re-apply it correctly.

Example fix

# before (cassandra.yaml)
seed_provider:
  - class_name: SimpleSeedProvider
    parameters:
      - seeds: 10.0.0.1 10.0.0.2   # malformed separator
# after
seed_provider:
  - class_name: SimpleSeedProvider
    parameters:
      - seeds: "10.0.0.1,10.0.0.2"
Defensive patterns

Strategy: try-catch

Validate before calling

// validate seed config at deploy time
Config config = DatabaseDescriptor.loadConfig();
if (config.seed_provider == null || config.seed_provider.parameters.isEmpty()) throw new ConfigurationException("seed_provider misconfigured");

Try / catch

try { seeds = seedProvider.getSeeds(); } catch (Throwable t) { JVMStabilityInspector.inspectThrowable(t); logger.warn("seed list refresh failed", t); }

Prevention

When it happens

Trigger: seed_provider implementation throws during getSeeds() when the periodic seed-list refresh runs — typically after cassandra.yaml was modified or a dynamic provider had a transient failure.

Common situations: Hand-edited cassandra.yaml with malformed seed entries reloaded at runtime; third-party seed providers (cloud metadata based) hitting network/auth failures; type mismatch in seed config values.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


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

Appendix: source

Thrown at src/java/org/apache/cassandra/gms/Gossiper.java:1823

        // Get the new set in the same that buildSeedsList does
        Set<InetAddressAndPort> tmp = new HashSet<>();
        try
        {
            for (InetAddressAndPort seed : DatabaseDescriptor.getSeeds())
            {
                if (seed.equals(getBroadcastAddressAndPort()))
                    continue;
                tmp.add(seed);
            }
        }
        // If using the SimpleSeedProvider invalid yaml added to the config since startup could
        // cause this to throw. Additionally, third party seed providers may throw exceptions.
        // Handle the error and return a null to indicate that there was a problem.
        catch (Throwable e)
        {
            JVMStabilityInspector.inspectThrowable(e);
            logger.warn("Error while getting seed node list: {}", e.getLocalizedMessage());
            return null;
        }

        if (tmp.size() == 0)
        {
            logger.trace("New seed node list is empty. Not updating seed list.");
            return getSeeds();
        }

        if (tmp.equals(seeds))
        {
            logger.trace("New seed node list matches the existing list.");
            return getSeeds();
        }

        // Add the new entries
        seeds.addAll(tmp);
        // Remove the old entries

View on GitHub (pinned to 88fd0f6a0e)