apache/druid · error · IAE
Unknown version[ ]
Error message
Unknown version[%s]
What it means
CompressedColumnarIntsSupplier.fromByteBuffer dispatches on a version byte read from the serialized buffer and throws IllegalArgumentException when the version is unrecognized. It indicates the bytes are not a valid/known-version CompressedColumnarIntsSupplier payload.
Solutions
- Use a Druid binary compatible with the segment's format version (check the segment metadata / writer version).
- Rebuild the segment from raw data with the current Druid version.
- Verify the buffer is positioned at the exact start of the column payload (first byte must be the version).
- Validate segment file integrity (re-download from deep storage).
Example fix
// before: reading segment files from an old cluster directly // after: re-index old segments // bin/druid index --spec reindex-spec.json (re-serializes with current format)
Defensive patterns
Strategy: validation
Validate before calling
// Java
int version = buf.get(buf.position());
if (!SUPPORTED_INTS_VERSIONS.contains(version)) {
throw new IllegalArgumentException("Unsupported column format version " + version);
} Try / catch
try {
return CompressedColumnarIntsSupplier.fromByteBuffer(buf, order, chunkFactor, mapper);
} catch (IllegalArgumentException e) {
throw new SegmentSerializationException("Incompatible/corrupt segment column", e);
} Prevention
- Match historical node versions to the ingestion cluster.
- Re-index legacy segments after major version upgrades.
- Slice buffers from recorded column offsets, not estimates.
When it happens
Trigger: Reading a compressed int column whose header version byte is not one of the supported versions - corrupt file, wrong buffer offset, or a segment written by an incompatible Druid version (older/newer format).
Common situations: Cross-version segment compatibility issues after Druid upgrade/downgrade; corrupted deep-storage files; mis-sliced ByteBuffers in custom segment-reading tools.
Related errors
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/ab0538b4f39df62a.
Report an issue: GitHub.
Appendix: source
Thrown at processing/src/main/java/org/apache/druid/segment/data/CompressedColumnarIntsSupplier.java:137
ByteOrder order,
SegmentFileMapper mapper
)
{
byte versionFromBuffer = buffer.get();
if (versionFromBuffer == VERSION) {
final int totalSize = buffer.getInt();
final int sizePer = buffer.getInt();
final CompressionStrategy compression = CompressionStrategy.forId(buffer.get());
return new CompressedColumnarIntsSupplier(
totalSize,
sizePer,
GenericIndexed.read(buffer, DecompressingByteBufferObjectStrategy.of(order, compression), mapper),
compression
);
}
throw new IAE("Unknown version[%s]", versionFromBuffer);
}
@VisibleForTesting
static CompressedColumnarIntsSupplier fromIntBuffer(
final IntBuffer buffer,
final int chunkFactor,
final ByteOrder byteOrder,
final CompressionStrategy compression,
final Closer closer
)
{
Preconditions.checkArgument(
chunkFactor <= MAX_INTS_IN_BUFFER, "Chunks must be <= 64k bytes. chunkFactor was[%s]", chunkFactor
);
return new CompressedColumnarIntsSupplier(
buffer.remaining(),
chunkFactor,View on GitHub (pinned to 9b90983fd2)