apache/cassandra · critical · ConfigurationException
broadcast_rpc_address cannot be a wildcard address (
Error message
broadcast_rpc_address cannot be a wildcard address (
What it means
Cassandra refuses to start if broadcast_rpc_address resolves to the wildcard address 0.0.0.0 (or ::), because a wildcard address cannot be meaningfully advertised to client drivers as the node's RPC endpoint. The check runs after resolution in applyAddressConfig.
Solutions
- Set broadcast_rpc_address to the node's specific routable IP or resolvable hostname
- If clients connect directly and no NAT is involved, remove broadcast_rpc_address entirely and keep rpc_address: 0.0.0.0 for binding
- In Kubernetes/NAT setups use the address reachable by clients (pod IP, Service/NAT address)
Example fix
// cassandra.yaml before rpc_address: 0.0.0.0 broadcast_rpc_address: 0.0.0.0 // after rpc_address: 0.0.0.0 broadcast_rpc_address: 10.0.1.5
Defensive patterns
Strategy: validation
Validate before calling
String addr = config.broadcast_rpc_address;
if (addr != null) {
java.net.InetAddress ia = java.net.InetAddress.getByName(addr);
if (ia.isAnyLocalAddress()) throw new IllegalStateException("broadcast_rpc_address must not be wildcard: " + addr);
} Try / catch
try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { /* fix yaml, not retryable */ } Prevention
- Never mirror rpc_address wildcard into broadcast_rpc_address
- Treat broadcast_* settings as client-facing addresses, always specific
- Lint cassandra.yaml for wildcard values in advertised-address fields
When it happens
Trigger: Setting broadcast_rpc_address: 0.0.0.0 (or a hostname resolving to the wildcard) in cassandra.yaml and calling DatabaseDescriptor.loadConfig() during startup.
Common situations: Operator copies rpc_address's wildcard value into broadcast_rpc_address misunderstanding that broadcast must be a specific routable address; templated configs that blanket-substitute bind addresses.
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
- broadcast_address cannot be a wildcard address (
- If rpc_address is set to a wildcard address (
- listen_address cannot be a wildcard address (
- A maximum number of tokens per node is supported
- accord.cache_size option was set incorrectly to
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/6ae2c557fc3307aa.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:1582
else
{
rpcAddress = FBUtilities.getJustLocalAddress();
}
/* RPC address to broadcast */
if (config.broadcast_rpc_address != null)
{
try
{
broadcastRpcAddress = InetAddress.getByName(config.broadcast_rpc_address);
}
catch (UnknownHostException e)
{
throw new ConfigurationException("Unknown broadcast_rpc_address '" + config.broadcast_rpc_address + '\'', false);
}
if (broadcastRpcAddress.isAnyLocalAddress())
throw new ConfigurationException("broadcast_rpc_address cannot be a wildcard address (" + config.broadcast_rpc_address + ")!", false);
}
else
{
if (rpcAddress.isAnyLocalAddress())
throw new ConfigurationException("If rpc_address is set to a wildcard address (" + config.rpc_address + "), then " +
"you must set broadcast_rpc_address to a value other than " + config.rpc_address, false);
}
}
public static void applyEncryptionContext()
{
// always attempt to load the cipher factory, as we could be in the situation where the user has disabled encryption,
// but has existing commitlogs and sstables on disk that are still encrypted (and still need to be read)
encryptionContext = new EncryptionContext(conf.transparent_data_encryption_options);
}
public static void applySslContext()
{View on GitHub (pinned to 88fd0f6a0e)