apache/cassandra · critical · ConfigurationException

Configured ${configName} "${intf}" was found, but had no add

Error message

Configured ${configName} "${intf}" was found, but had no addresses

What it means

The configured network interface was found by name, but enumerating its InetAddress values returned nothing — the interface exists yet has no usable address (typically because it has no IP assigned). Cassandra throws ConfigurationException since it cannot derive a listen/rpc address.

Source

Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:545

        if (!hasLoggedConfig)
        {
            hasLoggedConfig = true;
            Config.log(config);
        }

        return config;
    }

    private static InetAddress getNetworkInterfaceAddress(String intf, String configName, boolean preferIPv6) throws ConfigurationException
    {
        try
        {
            NetworkInterface ni = NetworkInterface.getByName(intf);
            if (ni == null)
                throw new ConfigurationException("Configured " + configName + " \"" + intf + "\" could not be found", false);
            Enumeration<InetAddress> addrs = ni.getInetAddresses();
            if (!addrs.hasMoreElements())
                throw new ConfigurationException("Configured " + configName + " \"" + intf + "\" was found, but had no addresses", false);

            /*
             * Try to return the first address of the preferred type, otherwise return the first address
             */
            InetAddress retval = null;
            while (addrs.hasMoreElements())
            {
                InetAddress temp = addrs.nextElement();
                if (preferIPv6 && temp instanceof Inet6Address) return temp;
                if (!preferIPv6 && temp instanceof Inet4Address) return temp;
                if (retval == null) retval = temp;
            }
            return retval;
        }
        catch (SocketException e)
        {
            throw new ConfigurationException("Configured " + configName + " \"" + intf + "\" caused an exception", e);
        }

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Assign an IP address to the configured interface before starting Cassandra
  2. Point cassandra.yaml at an interface that has an address (check with 'ip addr show <intf>')
  3. Use explicit listen_address/rpc_address IPs instead of interface names

Example fix

# before
listen_interface: dummy0
# after
listen_interface: eth0
# or
listen_address: 192.168.1.10
Defensive patterns

Strategy: validation

Validate before calling

NetworkInterface ni = NetworkInterface.getByName(intf); boolean hasAddr = ni != null && ni.getInetAddresses().hasMoreElements(); if (!hasAddr) throw new IllegalStateException("interface has no address: " + intf);

Try / catch

try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { log.error("interface {} not usable: {}", intf, e.getMessage()); }

Prevention

When it happens

Trigger: cassandra.yaml points listen_interface/rpc_interface at an interface that is up but unconfigured (no IP), or a loopback-only/VPN interface with no addresses at startup time.

Common situations: Starting Cassandra before DHCP/network configuration completes in VMs or containers, interfaces brought up without an address, or pointing at a tunnel/dummy interface.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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