apache/druid · error · org.apache.druid.java.util.common.ISE
Unknown class for object:
Error message
Unknown class for object:
What it means
A type-dispatch sentinel in FixedBucketsHistogram.combine: the incoming value was neither null, String (base64), FixedBucketsHistogram, nor Number, so the aggregator cannot merge it. This indicates a malformed intermediate result or an incompatible input column type feeding the aggregator.
Solutions
- Ensure the aggregation input column contains FixedBucketsHistogram objects, base64 strings, or numbers.
- Check for broker/segment data produced by an incompatible Druid version or a wrong output type from a preceding aggregator.
- Re-ingest or re-merge the affected segments if intermediate storage was corrupted.
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogram.java:471 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/e087c7a1fed3e2c0.
Report an issue: GitHub.
Appendix: source
Thrown at extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogram.java:471
* - base64 encoded string of {@code FixedBucketsHistogram}
* - {@code FixedBucketsHistogram} object
* - Numeric value
*
* @param val
*/
@VisibleForTesting
public void combine(@Nullable Object val)
{
if (val == null) {
incrementMissing();
} else if (val instanceof String) {
combineHistogram(fromBase64((String) val));
} else if (val instanceof FixedBucketsHistogram) {
combineHistogram((FixedBucketsHistogram) val);
} else if (val instanceof Number) {
add(((Number) val).doubleValue());
} else {
throw new ISE("Unknown class for object: " + val.getClass());
}
}
/**
* Merge another histogram into this one. Only the state of this histogram is updated.
*
* If the two histograms have identical buckets, a simpler algorithm is used.
*
* @param otherHistogram
*/
public void combineHistogram(FixedBucketsHistogram otherHistogram)
{
if (otherHistogram == null) {
return;
}
readWriteLock.writeLock().lock();
otherHistogram.getReadWriteLock().readLock().lock();View on GitHub (pinned to 9b90983fd2)