apache/cassandra · error · IllegalStateException
EstimatedHistogram overflow
Error message
EstimatedHistogram overflow: [{}] What it means
DecayingEstimatedHistogramReservoir.getValue logs this when the overflow bucket (last bucket) is non-zero: recorded latencies exceeded the histogram's largest representable bucket, so the quantile estimate at the requested point is a lower bound and unreliable. Accompanied by an IllegalStateException per the javadoc.
Solutions
- Treat returned quantile values as lower bounds when this appears.
- Investigate what produced latencies beyond the histogram range (e.g. GC pauses, stalled nodes).
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/java/org/apache/cassandra/metrics/DecayingEstimatedHistogramReservoir.java:512 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/4ef438c7059a3957.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/metrics/DecayingEstimatedHistogramReservoir.java:512
/**
* Get the estimated value at the specified quantile in the distribution.
*
* @param quantile the quantile specified as a value between 0.0 (zero) and 1.0 (one)
* @return estimated value at given quantile
* @throws IllegalStateException in case the histogram overflowed
*/
@Override
public double getValue(double quantile)
{
assert quantile >= 0 && quantile <= 1.0;
final int lastBucket = decayingBuckets.length - 1;
if (decayingBuckets[lastBucket] > 0)
{
try { throw new IllegalStateException("EstimatedHistogram overflow: " + Arrays.toString(decayingBuckets)); }
catch (IllegalStateException e) { noSpamLogger.warn("", e); }
}
final long qcount = (long) Math.ceil(count() * quantile);
if (qcount == 0)
return 0;
long elements = 0;
for (int i = 0; i < lastBucket; i++)
{
elements += decayingBuckets[i];
if (elements >= qcount)
return bucketOffsets[i];
}
return 0;
}
/**
* Return the number of registered values taking forward decay into account.View on GitHub (pinned to 88fd0f6a0e)