apache/cassandra · error · ConfigurationException

stream_throughput_outbound

Error message

stream_throughput_outbound: %s is too large

What it means

When sstableloader reads the local cassandra.yaml to derive defaults, it enforces the pre-CASSANDRA-15234 upper bound that stream_throughput_outbound, expressed in megabits per second, fits in an int. If the configured rate is >= Integer.MAX_VALUE megabits/sec it throws ConfigurationException 'stream_throughput_outbound: <value> is too large'. See tools/sstableloader/src/org/apache/cassandra/tools/LoaderOptions.java:498.

Solutions

  1. Set stream_throughput_outbound to a sane value (e.g. 200MiB/s) or null to disable throttling in cassandra.yaml
  2. Check the units — the value is a rate like 200MiB/s, not raw megabits
  3. Point sstableloader at the correct config via --conf-path

Example fix

// before (cassandra.yaml)
stream_throughput_outbound: 99999999999MiB/s
// after
stream_throughput_outbound: 200MiB/s
Defensive patterns

Strategy: validation

Validate before calling

// pre-check the config value sstableloader will read
// grep stream_throughput_outbound $CONF/cassandra.yaml
// value should be a sane rate like '200MiB/s' or null

Try / catch

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

Prevention

When it happens

Trigger: Running sstableloader against a cassandra.yaml whose stream_throughput_outbound converts to >= Integer.MAX_VALUE megabits per second — practically a mis-entered value with confused units in the config file.

Common situations: Hand-edited cassandra.yaml with typo'd or unit-confused throughput values (MiB/s vs Mbps); tooling writing absurd values; configs copied from test environments.

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/64f33645214acd07. Report an issue: GitHub.

Appendix: source

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

                }

                // try to load config file first, so that values can be
                // rewritten with other option values.
                // otherwise use default config.
                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

View on GitHub (pinned to 88fd0f6a0e)