apache/druid · error · IAE
Unknown version[ ]
Error message
Unknown version[%s]
What it means
CompressedColumnarFloatsSupplier.fromByteBuffer reads a serialized compressed float column and dispatches on a version byte. If the version read from the buffer does not match any known format version, it throws IllegalArgumentException. This almost always means the bytes are not a CompressedColumnarFloatsSupplier payload, or were written by an incompatible Druid version.
Solutions
- Check the Druid version that wrote the segment and run the same (or migration-compatible) version to read it.
- Re-generate the segment from source data with the current Druid version instead of copying segment files across versions.
- Verify the ByteBuffer position/offset: the version byte must be the first byte of the supplier payload, not an arbitrary offset in the file.
- Confirm the file is not truncated or corrupted (checksums, copy again).
Example fix
// before: blindly reading a buffer at an assumed offset CompressedColumnarFloatsSupplier.fromByteBuffer(buffer.slice(), order, compression); // after: slice from the recorded start position of the column payload buffer.position(columnOffset); CompressedColumnarFloatsSupplier.fromByteBuffer(buffer.slice(), order, compression);
Defensive patterns
Strategy: validation
Validate before calling
// Java
int version = buf.get(buf.position());
if (!SUPPORTED_FLOAT_VERSIONS.contains(version)) {
throw new IllegalArgumentException("Segment format version " + version + " not supported by this Druid build");
} Prevention
- Keep all Druid nodes (ingestion + historical) on the same release line.
- Never read segment files at hand-computed offsets; use the segment descriptor metadata.
- Validate segment files after copying between clusters.
When it happens
Trigger: Calling CompressedColumnarFloatsSupplier.fromByteBuffer on a ByteBuffer whose leading version byte is not one of the recognized constants (e.g. corrupt segment file, offset misaligned so a non-version byte is read, or segment written by a newer/older Druid with a format version this binary does not know).
Common situations: Upgrading or downgrading Druid across segment-format changes and reading old or new segments; hand-crafted or truncated segment files; pointing a historical node at segment files produced by another storage format that happens to share the directory layout.
Related errors
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/aa5eba6d8dd86fba.
Report an issue: GitHub.
Appendix: source
Thrown at processing/src/main/java/org/apache/druid/segment/data/CompressedColumnarFloatsSupplier.java:129
}
Supplier<ColumnarFloats> supplier = CompressionFactory.getFloatSupplier(
totalSize,
sizePer,
buffer.asReadOnlyBuffer(),
order,
compression,
fileMapper
);
return new CompressedColumnarFloatsSupplier(
totalSize,
sizePer,
buffer,
supplier,
compression
);
}
throw new IAE("Unknown version[%s]", versionFromBuffer);
}
}
View on GitHub (pinned to 9b90983fd2)