apache/cassandra · error · ConfigurationException

inter_dc_stream_throughput_outbound

Error message

inter_dc_stream_throughput_outbound: %s is too large

What it means

Same pre-CASSANDRA-15234 int-overflow guard applied to inter_dc_stream_throughput_outbound: if the configured cross-datacenter outbound stream rate converts to >= Integer.MAX_VALUE megabits per second, Builder throws ConfigurationException 'inter_dc_stream_throughput_outbound: <value> is too large'. See tools/sstableloader/src/org/apache/cassandra/tools/LoaderOptions.java:503.

Solutions

  1. Set inter_dc_stream_throughput_outbound to a realistic rate (e.g. 50MiB/s) or null (unthrottled)
  2. Verify units — the value is a rate, not raw megabits
  3. Ensure --conf-path points at the intended config

Example fix

// before (cassandra.yaml)
inter_dc_stream_throughput_outbound: 2147483648Mbps
// after
inter_dc_stream_throughput_outbound: 50MiB/s
Defensive patterns

Strategy: validation

Validate before calling

// pre-check config
// grep inter_dc_stream_throughput_outbound $CONF/cassandra.yaml
// value should be like '50MiB/s' or null, never >= 2^31 Mbps

Try / catch

try {
    options = new LoaderOptions.Builder(dirs, args).build();
} catch (ConfigurationException e) {
    if (e.getMessage().startsWith("inter_dc_stream_throughput_outbound")) {
        // correct the yaml and retry
    }
    throw e;
}

Prevention

When it happens

Trigger: sstableloader loading a cassandra.yaml where inter_dc_stream_throughput_outbound is so high that toMegabitsPerSecond() >= Integer.MAX_VALUE — a typo'd or unit-confused rate.

Common situations: Mis-edited cassandra.yaml with an absurd inter-DC throttle; unit confusion when migrating configs between Cassandra versions.

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


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

Appendix: source

Thrown at tools/sstableloader/src/org/apache/cassandra/tools/LoaderOptions.java:503

                Config config;
                if (cmd.hasOption(CONFIG_PATH))
                {
                    File configFile = new File(cmd.getOptionValue(CONFIG_PATH));
                    if (!configFile.exists())
                    {
                        errorMsg("Config file not found", options);
                    }
                    config = new YamlConfigurationLoader().loadConfig(configFile.toPath().toUri().toURL());

                    // below 2 checks are needed in order to match the pre-CASSANDRA-15234 upper bound for those parameters which were still in megabits per second
                    if (config.stream_throughput_outbound.toMegabitsPerSecond() >= Integer.MAX_VALUE)
                    {
                        throw new ConfigurationException("stream_throughput_outbound: " + config.stream_throughput_outbound.toString() + " is too large", false);
                    }

                    if (config.inter_dc_stream_throughput_outbound.toMegabitsPerSecond() >= Integer.MAX_VALUE)
                    {
                        throw new ConfigurationException("inter_dc_stream_throughput_outbound: " + config.inter_dc_stream_throughput_outbound.toString() + " is too large", false);
                    }

                    if (config.entire_sstable_stream_throughput_outbound.toMebibytesPerSecond() >= Integer.MAX_VALUE)
                    {
                        throw new ConfigurationException("entire_sstable_stream_throughput_outbound: " + config.entire_sstable_stream_throughput_outbound.toString() + " is too large", false);
                    }

                    if (config.entire_sstable_inter_dc_stream_throughput_outbound.toMebibytesPerSecond() >= Integer.MAX_VALUE)
                    {
                        throw new ConfigurationException("entire_sstable_inter_dc_stream_throughput_outbound: " + config.entire_sstable_inter_dc_stream_throughput_outbound.toString() + " is too large", false);
                    }
                }
                else
                {
                    config = new Config();
                    // unthrottle stream by default
                    config.stream_throughput_outbound = new DataRateSpec.LongBytesPerSecondBound(0);
                    config.inter_dc_stream_throughput_outbound = new DataRateSpec.LongBytesPerSecondBound(0);

View on GitHub (pinned to 88fd0f6a0e)