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
- Set stream_throughput_outbound to a sane value (e.g. 200MiB/s) or null to disable throttling in cassandra.yaml
- Check the units — the value is a rate like 200MiB/s, not raw megabits
- 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
- Keep stream_throughput_outbound within realistic bounds (tens to hundreds of MiB/s) or null
- Don't put megabit values into MiB/s-typed config fields
- Audit generated/copy-pasted cassandra.yaml files before use
- Pin the intended config with --conf-path
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
- entire_sstable_inter_dc_stream_throughput_outbound
- entire_sstable_stream_throughput_outbound
- inter_dc_stream_throughput_outbound
- repair_session_max_tree_depth has been deprecated and…
- A repair_session_space of
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);
}
}
elseView on GitHub (pinned to 88fd0f6a0e)