apache/cassandra · error · ConfigurationException
Invalid value of stream_throughput_outbound:
Error message
Invalid value of stream_throughput_outbound:
What it means
validateUpperBoundStreamingConfig preserves the pre-CASSANDRA-15234 upper bound where stream_throughput_outbound was expressed in megabits per second as an int. DatabaseDescriptor throws this ConfigurationException when the configured rate, converted to megabits/second, is >= Integer.MAX_VALUE.
Source
Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:1304
// is thrown when arguments are invalid instead ConfigurationException, on purpose.
DatabaseDescriptor.setGCLogThreshold((int) DatabaseDescriptor.getGCLogThreshold());
DatabaseDescriptor.setGCWarnThreshold((int) DatabaseDescriptor.getGCWarnThreshold());
DatabaseDescriptor.setGCConcurrentPhaseLogThreshold(DatabaseDescriptor.getGCConcurrentPhaseLogThreshold());
DatabaseDescriptor.setGCConcurrentPhaseWarnThreshold(DatabaseDescriptor.getGCConcurrentPhaseWarnThreshold());
}
catch (IllegalArgumentException ex)
{
throw new ConfigurationException(ex.getMessage());
}
}
@VisibleForTesting
static void validateUpperBoundStreamingConfig() throws ConfigurationException
{
// 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 (conf.stream_throughput_outbound.toMegabitsPerSecond() >= Integer.MAX_VALUE)
{
throw new ConfigurationException("Invalid value of stream_throughput_outbound: " + conf.stream_throughput_outbound.toString(), false);
}
if (conf.inter_dc_stream_throughput_outbound.toMegabitsPerSecond() >= Integer.MAX_VALUE)
{
throw new ConfigurationException("Invalid value of inter_dc_stream_throughput_outbound: " + conf.inter_dc_stream_throughput_outbound.toString(), false);
}
if (conf.entire_sstable_stream_throughput_outbound.toMebibytesPerSecond() >= Integer.MAX_VALUE)
{
throw new ConfigurationException("Invalid value of entire_sstable_stream_throughput_outbound: " + conf.entire_sstable_stream_throughput_outbound.toString(), false);
}
if (conf.entire_sstable_inter_dc_stream_throughput_outbound.toMebibytesPerSecond() >= Integer.MAX_VALUE)
{
throw new ConfigurationException("Invalid value of entire_sstable_inter_dc_stream_throughput_outbound: " + conf.entire_sstable_inter_dc_stream_throughput_outbound.toString(), false);
}
if (conf.compaction_throughput.toMebibytesPerSecond() >= Integer.MAX_VALUE)View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Set stream_throughput_outbound to a realistic rate well below Integer.MAX_VALUE megabits per second
- Check the unit suffix (e.g. 200MiB/s) - an accidental huge value usually indicates a unit error
Example fix
// before (cassandra.yaml) stream_throughput_outbound: 9999999999999MiB/s // after stream_throughput_outbound: 200MiB/s
Defensive patterns
Strategy: validation
Validate before calling
if (conf.stream_throughput_outbound.toMegabitsPerSecond() >= Integer.MAX_VALUE) throw new IllegalArgumentException("stream_throughput_outbound too large"); Try / catch
try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { log.error(e.getMessage()); } Prevention
- Set streaming throughput in realistic units (MiB/s) with explicit suffixes
- Sanity-check cassandra.yaml rates before deployment
When it happens
Trigger: DatabaseDescriptor static initialization with stream_throughput_outbound >= 2147483647 megabits per second in cassandra.yaml.
Common situations: Extremely large stream_throughput_outbound values (often from unit mistakes, e.g. confusing bytes/sec with bits/sec) in cassandra.yaml.
Understand the failure class
Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.
Related errors
- Invalid value of inter_dc_stream_throughput_outbound:
- Load CIDR groups cache operation not supported by %s
- Unsupported parameter '%s' for %s, supported parameters are
- JAAS login configuration missing for JMX authenticator setup
- repair_session_max_tree_depth should not be < 10, but was ${
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/16c6349170f0b673.
Report an issue: GitHub.