apache/druid · error · IllegalArgumentException
Unknown version[ ]
Error message
Unknown version[%s]
What it means
CompressedVSizeColumnarIntsSupplier.fromByteBuffer switches on the version byte read from the buffer and throws IllegalArgumentException for any unrecognized version. The buffer does not contain a supported CompressedVSizeColumnarIntsSupplier payload for this Druid build.
Solutions
- Run a Druid version that supports the segment's format version (match historicals to the writer version).
- Re-index/rebuild the segment with the current Druid version.
- Verify the buffer position so the first byte read is genuinely the version byte.
- Re-download the segment to eliminate corruption.
Example fix
// before: fromByteBuffer(buffer) with buffer mid-way through the file // after: fromByteBuffer(columnStart.slice()) where columnStart points at the payload header
Defensive patterns
Strategy: validation
Validate before calling
// Java
int version = buf.get(buf.position());
if (!SUPPORTED_VSIZE_INTS_VERSIONS.contains(version)) {
throw new IllegalArgumentException("Unsupported vSize column version " + version);
} Try / catch
try {
return CompressedVSizeColumnarIntsSupplier.fromByteBuffer(buf, order, mapper);
} catch (IllegalArgumentException e) {
throw new SegmentSerializationException("Incompatible vSize int column", e);
} Prevention
- Keep segment writer and reader Druid versions compatible.
- Position buffers at exact column payload starts.
- Re-index segments after format-changing upgrades.
When it happens
Trigger: Reading a v-size compressed int column with an unsupported header version: segment written by an incompatible Druid version, corrupted or truncated file, or the ByteBuffer is not sliced at the column payload start.
Common situations: Version skew between ingestion and query nodes; reading segments copied manually from another cluster; tooling that parses segment files with wrong offsets.
Related errors
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/b861b6fc0fa735d0.
Report an issue: GitHub.
Appendix: source
Thrown at processing/src/main/java/org/apache/druid/segment/data/CompressedVSizeColumnarIntsSupplier.java:174
if (versionFromBuffer == VERSION) {
final int numBytes = buffer.get();
final int totalSize = buffer.getInt();
final int sizePer = buffer.getInt();
final CompressionStrategy compression = CompressionStrategy.forId(buffer.get());
return new CompressedVSizeColumnarIntsSupplier(
totalSize,
sizePer,
numBytes,
GenericIndexed.read(buffer, DecompressingByteBufferObjectStrategy.of(order, compression), mapper),
compression
);
}
throw new IAE("Unknown version[%s]", versionFromBuffer);
}
@VisibleForTesting
public static CompressedVSizeColumnarIntsSupplier fromList(
final IntList list,
final int maxValue,
final int chunkFactor,
final ByteOrder byteOrder,
final CompressionStrategy compression,
final Closer closer
)
{
final int numBytes = VSizeColumnarInts.getNumBytesForMax(maxValue);
final int chunkBytes = chunkFactor * numBytes;
Preconditions.checkArgument(
chunkFactor <= maxIntsInBufferForBytes(numBytes),
"Chunks must be <= 64k bytes. chunkFactor was[%s]",View on GitHub (pinned to 9b90983fd2)