apache/druid · error · IllegalArgumentException
Unknown version[ ]
Error message
Unknown version[%s]
What it means
CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer reads a version byte from the serialized multi-int column and throws IllegalArgumentException when the version is unknown. This means the payload is not a recognized CompressedVSizeColumnarMultiIntsSupplier format for this Druid version.
Solutions
- Use a Druid reader version compatible with the segment format version.
- Rebuild the segment from source data (re-index) with the current format.
- Confirm the ByteBuffer is positioned exactly at the supplier payload start.
- Verify file integrity by re-fetching from deep storage.
Example fix
// before: historicals on old version serving segments from upgraded ingestion // after: upgrade historicals (or mark new segments served only by upgraded nodes)
Defensive patterns
Strategy: validation
Validate before calling
// Java
int version = buf.get(buf.position());
if (!SUPPORTED_MULTI_INTS_VERSIONS.contains(version)) {
throw new IllegalArgumentException("Unsupported multi-int column version " + version);
} Try / catch
try {
return CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer(buf, order, mapper);
} catch (IllegalArgumentException e) {
throw new SegmentSerializationException("Unknown multi-int column format", e);
} Prevention
- Verify segment integrity when migrating between clusters.
- Do not parse segment binaries outside Druid's column-reading APIs.
- Align node versions during rolling upgrades.
When it happens
Trigger: Calling fromByteBuffer on a buffer with an unsupported version byte: newer-format segments read by an older binary, corrupted/truncated files, or misaligned buffer offsets so a random byte is read as the version.
Common situations: Cluster version skew during upgrades; manual segment inspection/copy tools; deep-storage corruption for multi-value dimension columns.
Related errors
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/2d1147de529b9305.
Report an issue: GitHub.
Appendix: source
Thrown at processing/src/main/java/org/apache/druid/segment/data/CompressedVSizeColumnarMultiIntsSupplier.java:103
SegmentFileMapper fileMapper
)
{
byte versionFromBuffer = buffer.get();
if (versionFromBuffer == VERSION) {
CompressedVSizeColumnarIntsSupplier offsetSupplier = CompressedVSizeColumnarIntsSupplier.fromByteBuffer(
buffer,
order,
fileMapper
);
CompressedVSizeColumnarIntsSupplier valueSupplier = CompressedVSizeColumnarIntsSupplier.fromByteBuffer(
buffer,
order,
fileMapper
);
return new CompressedVSizeColumnarMultiIntsSupplier(offsetSupplier, valueSupplier);
}
throw new IAE("Unknown version[%s]", versionFromBuffer);
}
@VisibleForTesting
public static CompressedVSizeColumnarMultiIntsSupplier fromIterable(
final Iterable<IndexedInts> objectsIterable,
final int maxValue,
final ByteOrder byteOrder,
final CompressionStrategy compression,
final Closer closer
)
{
Iterator<IndexedInts> objects = objectsIterable.iterator();
IntList offsetList = new IntArrayList();
IntList values = new IntArrayList();
int offset = 0;
while (objects.hasNext()) {
IndexedInts next = objects.next();View on GitHub (pinned to 9b90983fd2)