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
- Validate cassandra.yaml seed_provider syntax; fix invalid entries and restart.
- Check the third-party seed provider's connectivity/credentials if a dynamic provider is used.
- Inspect the accompanying exception message in the log to identify the exact provider failure.
- 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
- Lint/validate cassandra.yaml in CI before rollout.
- Test third-party seed providers' auth/network from the node.
- Keep SimpleSeedProvider entries comma-separated and quoted.
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
- Seeds list is now empty!
- broadcast_address cannot be a wildcard address (
- seeds configuration is missing; a minimum of one seed is…
- Unknown broadcast_address '
- A maximum number of tokens per node is supported
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 entriesView on GitHub (pinned to 88fd0f6a0e)