{"record":{"id":"8f3a1e6a43309c9b","repo":"apache/cassandra","slug":"seeds-configuration-is-missing-a-minimum-of-one-s","errorCode":null,"errorMessage":"seeds configuration is missing; a minimum of one seed is required.","messagePattern":"seeds configuration is missing; a minimum of one seed is required\\.","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"critical","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":1664,"sourceCode":"        {\n            cryptoProvider = FBUtilities.newCryptoProvider(conf.crypto_provider.class_name, cryptoProviderParameters);\n            cryptoProvider.install();\n        }\n        catch (Exception e)\n        {\n            if (e instanceof ConfigurationException)\n                throw (ConfigurationException) e;\n            else\n                throw new ConfigurationException(String.format(\"Failed to initialize crypto provider %s\", conf.crypto_provider.class_name), e);\n        }\n    }\n\n    public static void applySeedProvider()\n    {\n        // load the seeds for node contact points\n        if (conf.seed_provider == null)\n        {\n            throw new ConfigurationException(\"seeds configuration is missing; a minimum of one seed is required.\", false);\n        }\n        try\n        {\n            Class<? extends SeedProvider> seedProviderClass =\n                FBUtilities.classForNameWithoutInitialization(conf.seed_provider.class_name, \"seed provider\", SeedProvider.class);\n            seedProvider = (SeedProvider) seedProviderClass.getConstructor(Map.class).newInstance(conf.seed_provider.parameters);\n        }\n        // there are about 5 checked exceptions that could be thrown here.\n        catch (Exception e)\n        {\n            throw new ConfigurationException(e.getMessage() + \"\\nFatal configuration error; unable to start server.  See log for stacktrace.\", true);\n        }\n        if (seedProvider.getSeeds().size() == 0)\n            throw new ConfigurationException(\"The seed provider lists no seeds.\", false);\n    }\n\n    @VisibleForTesting\n    static void checkForLowestAcceptedTimeouts(Config conf)","sourceCodeStart":1646,"sourceCodeEnd":1682,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L1646-L1682","documentation":"applySeedProvider() requires a seed_provider section in cassandra.yaml; seeds are the contact points a new node uses to join the cluster. If seed_provider is entirely absent (null), startup fails immediately with this ConfigurationException because at least one seed is mandatory.","triggerScenarios":"DatabaseDescriptor.applySeedProvider() runs at startup with conf.seed_provider == null — i.e. cassandra.yaml has no seed_provider block at all (the default file ships one using SimpleSeedProvider).","commonSituations":"Minimal/hand-rolled cassandra.yaml that omits seed_provider; a config-management template that renders the section away; accidental deletion of the block while editing.","solutions":["Add a seed_provider block to cassandra.yaml with org.apache.cassandra.locator.SimpleSeedProvider and a non-empty seeds list","Set seeds to at least one existing node's address (comma-separated for several)","Start from the stock cassandra.yaml shipped with the distribution and reapply only intended overrides"],"exampleFix":"// cassandra.yaml before (section removed)\n// after\nseed_provider:\n  - class_name: org.apache.cassandra.locator.SimpleSeedProvider\n    parameters:\n      - seeds: \"10.0.1.1:7000,10.0.1.2:7000\"","handlingStrategy":"validation","validationCode":"if (conf.seed_provider == null)\n    throw new IllegalStateException(\"cassandra.yaml must define seed_provider with at least one seed\");","typeGuard":null,"tryCatchPattern":"try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { /* fix yaml, restart */ }","preventionTips":["Start from the stock cassandra.yaml; never delete seed_provider","Keep seed_provider in your base config template with required markers","Validate rendered configs in CI before rollout"],"tags":["cassandra","configuration","seeds"],"backgroundTag":"missing-required-config-field","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}