apache/cassandra · critical · ConfigurationException
Unknown broadcast_rpc_address '
Error message
Unknown broadcast_rpc_address '
What it means
DatabaseDescriptor.applySimpleConfig / applyAddressConfig validates the cassandra.yaml broadcast_rpc_address setting by resolving it with InetAddress.getByName. If the hostname cannot be resolved via DNS, an UnknownHostException is wrapped in a ConfigurationException and startup aborts because the node cannot advertise an unreachable RPC address to clients.
Source
Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:1578
else if (config.rpc_interface != null)
{
rpcAddress = getNetworkInterfaceAddress(config.rpc_interface, "rpc_interface", config.rpc_interface_prefer_ipv6);
}
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);View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Fix broadcast_rpc_address in cassandra.yaml to a resolvable hostname or, simplest, an explicit IP address
- Add the hostname to /etc/hosts or fix DNS so it resolves before Cassandra starts
- If the setting is unnecessary (no NAT/overlay), remove or comment out broadcast_rpc_address so the RPC address is derived from rpc_address
- Verify with `getent hosts <name>` (or `nslookup`) before starting Cassandra
Example fix
// cassandra.yaml before broadcast_rpc_address: rpc-node-01.internal.example // after (use resolvable name or literal IP) broadcast_rpc_address: 10.0.1.5
Defensive patterns
Strategy: validation
Validate before calling
String addr = config.broadcast_rpc_address;
if (addr != null) {
try { java.net.InetAddress.getByName(addr); }
catch (java.net.UnknownHostException e) { throw new IllegalStateException("broadcast_rpc_address unresolvable: " + addr); }
} Try / catch
try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { logger.error("Config error: {}", e.getMessage()); System.exit(1); } Prevention
- Prefer literal IPs for broadcast_rpc_address in datacenter configs
- Validate resolvability with getent/nslookup as a pre-start health check
- Never let config templates inject unrendered hostnames
When it happens
Trigger: Calling DatabaseDescriptor.loadConfig()/applyAddressConfig() (e.g. during daemon startup) when config.broadcast_rpc_address is set to a hostname that DNS cannot resolve — typo, stale entry, or nameserver outage.
Common situations: cassandra.yaml edited by hand with a misspelled hostname; /etc/hosts entry removed; DNS not yet up at node boot in containers; using a public DNS name in an air-gapped cluster.
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
- Unknown listen_address '
- Unknown broadcast_address '
- Unknown host in rpc_address
- Load CIDR groups cache operation not supported by %s
- Unsupported parameter '%s' for %s, supported parameters are
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/909f0c82a4b8f67e.
Report an issue: GitHub.