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

  1. Use a Druid binary compatible with the segment's format version (check the segment metadata / writer version).
  2. Rebuild the segment from raw data with the current Druid version.
  3. Verify the buffer is positioned at the exact start of the column payload (first byte must be the version).
  4. 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

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)