apache/druid · critical · IllegalArgumentException
Unsupported multi-value version[%s]
Error message
Unsupported multi-value version[%s]
What it means
readMultiValuedColumn handles three known VERSION values (UNCOMPRESSED_SINGLE_VALUE-family, UNCOMPRESSED_WITH_FLAGS, COMPRESSED). A multi-valued column stored with any other VERSION enum value triggers this IAE in the default branch. This is a format-compatibility failure: the segment was written by an unknown/incompatible writer.
Source
Thrown at processing/src/main/java/org/apache/druid/segment/serde/DictionaryEncodedColumnPartSerde.java:464
}
case UNCOMPRESSED_WITH_FLAGS: {
if (Feature.MULTI_VALUE.isSet(flags)) {
return VSizeColumnarMultiInts.readFromByteBuffer(buffer);
} else {
throw new IAE("Unrecognized multi-value flag[%d] for version[%s]", flags, version);
}
}
case COMPRESSED: {
if (Feature.MULTI_VALUE.isSet(flags)) {
return CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer(buffer, byteOrder, fileMapper);
} else if (Feature.MULTI_VALUE_V3.isSet(flags)) {
return V3CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer(buffer, byteOrder, fileMapper);
} else {
throw new IAE("Unrecognized multi-value flag[%d] for version[%s]", flags, version);
}
}
default:
throw new IAE("Unsupported multi-value version[%s]", version);
}
}
};
}
private static boolean mustWriteFlags(final int flags)
{
// Flags that are not implied by version codes < COMPRESSED must be written. This includes MULTI_VALUE_V3.
return flags != NO_FLAGS && flags != Feature.MULTI_VALUE.getMask();
}
}
View on GitHub (pinned to 9b90983fd2)
Solutions
- Upgrade the Druid nodes loading the segment to the version that wrote it.
- Re-ingest the affected data so segments are written in a format the current cluster supports.
- Restore corrupt segments from deep storage.
- Standardize one Druid version across the cluster before sharing segment storage.
Defensive patterns
Strategy: validation
Try / catch
try {
return adapter.getColumn("multiDim");
} catch (IAE e) {
if (e.getMessage().contains("Unsupported multi-value version")) {
throw new IllegalStateException("Segment written by incompatible Druid version; upgrade required", e);
}
throw e;
} Prevention
- Run a homogeneous Druid version cluster.
- Check release notes for segment-format changes before upgrades and downgrades.
- Re-ingest after format-changing upgrades when backward compatibility is not guaranteed.
When it happens
Trigger: Deserializing a multi-valued dictionary-encoded string column whose VERSION enum value falls outside the switch's known cases during segment load.
Common situations: Downgraded Druid reading newer-format segments; segment corruption flipping the version enum ordinal; hand-edited or converted segment metadata.
Related errors
- Unsupported single-value version[%s]
- Unknown version %s
- Unknown version[%s]
- Unknown version[%s]
- Unknown version[%s]
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/768f37ebe933dd13.
Report an issue: GitHub.