apache/cassandra · error · IllegalStateException
Not updating range_tombstone_resize_factor as growth factor…
Error message
Not updating range_tombstone_resize_factor as growth factor must be in the range [1.2, 5.0] inclusive
What it means
setRangeTombstoneListResizeGrowthFactor() sets the growth factor used when RangeTombstoneList resizes. It throws IllegalStateException when the factor is outside the inclusive range [1.2, 5.0]; the current setting is left unchanged.
Solutions
- Supply a double in [1.2, 5.0] inclusive (e.g., 2.0).
- Read the current factor first and clamp computed values to the bounds before calling.
- Clamp: Math.max(1.2, Math.min(5.0, factor)).
Example fix
// before ss.setRangeTombstoneListResizeGrowthFactor(10.0); // rejected // after ss.setRangeTombstoneListResizeGrowthFactor(2.0);
Defensive patterns
Strategy: validation
Validate before calling
if (growthFactor < 1.2 || growthFactor > 5.0) throw new IllegalArgumentException("growth factor must be in [1.2,5.0]");
ss.setRangeTombstoneListResizeGrowthFactor(growthFactor); Type guard
boolean validFactor = Double.isFinite(growthFactor) && growthFactor >= 1.2 && growthFactor <= 5.0;
Try / catch
try { ss.setRangeTombstoneListResizeGrowthFactor(f); } catch (IllegalStateException e) { log.warn("invalid growth factor {}", f, e); } Prevention
- Validate the [1.2, 5.0] inclusive range before calling.
- Clamp: Math.max(1.2, Math.min(5.0, f)).
- Beware percent-style values (50) versus multipliers (1.5).
- Read the current factor to gauge sensible values.
When it happens
Trigger: Calling StorageService.setRangeTombstoneListResizeGrowthFactor(growthFactor) with growthFactor < 1.2 or > 5.0 via JMX, nodetool, or code.
Common situations: Passing 1.0 or 1.1 (no-growth intuitions), or 10 (thinking it is a multiplier cap); unit confusion with percentage values like 50 meaning 50%.
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
- Cannot set concurrent_validations greater than…
- Not updating initial_range_tombstone_allocation_size as it…
- Number of concurrent compactors should be greater than 0.
- Number of concurrent index builders should be greater than…
- Number of concurrent view builders should be greater than 0.
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/6e2c48db81f6c398.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/service/StorageService.java:5025
if (size < 0 || size > 1024)
{
throw new IllegalStateException("Not updating initial_range_tombstone_allocation_size as it must be in the range [0, 1024] inclusive");
}
int originalSize = DatabaseDescriptor.getInitialRangeTombstoneListAllocationSize();
DatabaseDescriptor.setInitialRangeTombstoneListAllocationSize(size);
logger.info("Updated initial_range_tombstone_allocation_size from {} to {}", originalSize, size);
}
public double getRangeTombstoneResizeListGrowthFactor()
{
return DatabaseDescriptor.getRangeTombstoneListGrowthFactor();
}
public void setRangeTombstoneListResizeGrowthFactor(double growthFactor) throws IllegalStateException
{
if (growthFactor < 1.2 || growthFactor > 5)
{
throw new IllegalStateException("Not updating range_tombstone_resize_factor as growth factor must be in the range [1.2, 5.0] inclusive");
}
else
{
double originalGrowthFactor = DatabaseDescriptor.getRangeTombstoneListGrowthFactor();
DatabaseDescriptor.setRangeTombstoneListGrowthFactor(growthFactor);
logger.info("Updated range_tombstone_resize_factor from {} to {}", originalGrowthFactor, growthFactor);
}
}
public void setHintedHandoffThrottleInKB(int throttleInKB)
{
DatabaseDescriptor.setHintedHandoffThrottleInKiB(throttleInKB);
logger.info("updated hinted_handoff_throttle to {} KiB", throttleInKB);
}
public boolean getTransferHintsOnDecommission()
{
return DatabaseDescriptor.getTransferHintsOnDecommission();View on GitHub (pinned to 88fd0f6a0e)