{"record":{"id":"aa5eba6d8dd86fba","repo":"apache/druid","slug":"unknown-version-s-aa5eba","errorCode":null,"errorMessage":"Unknown version[%s]","messagePattern":"Unknown version\\[(.+?)\\]","errorType":"exception","errorClass":"IAE","httpStatus":null,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/segment/data/CompressedColumnarFloatsSupplier.java","lineNumber":129,"sourceCode":"      }\n      Supplier<ColumnarFloats> supplier = CompressionFactory.getFloatSupplier(\n          totalSize,\n          sizePer,\n          buffer.asReadOnlyBuffer(),\n          order,\n          compression,\n          fileMapper\n      );\n      return new CompressedColumnarFloatsSupplier(\n          totalSize,\n          sizePer,\n          buffer,\n          supplier,\n          compression\n      );\n    }\n\n    throw new IAE(\"Unknown version[%s]\", versionFromBuffer);\n  }\n}\n","sourceCodeStart":111,"sourceCodeEnd":132,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/segment/data/CompressedColumnarFloatsSupplier.java#L111-L132","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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)."],"exampleFix":"// before: blindly reading a buffer at an assumed offset\nCompressedColumnarFloatsSupplier.fromByteBuffer(buffer.slice(), order, compression);\n// after: slice from the recorded start position of the column payload\nbuffer.position(columnOffset);\nCompressedColumnarFloatsSupplier.fromByteBuffer(buffer.slice(), order, compression);","handlingStrategy":"validation","validationCode":"// Java\nint version = buf.get(buf.position());\nif (!SUPPORTED_FLOAT_VERSIONS.contains(version)) {\n  throw new IllegalArgumentException(\"Segment format version \" + version + \" not supported by this Druid build\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["segment-format","version-mismatch","deserialization"],"backgroundTag":"unsupported-enum-value","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T20:17:13.540Z"}