{"record":{"id":"b861b6fc0fa735d0","repo":"apache/druid","slug":"unknown-version-s-b861b6","errorCode":null,"errorMessage":"Unknown version[%s]","messagePattern":"Unknown version\\[(.+?)\\]","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/segment/data/CompressedVSizeColumnarIntsSupplier.java","lineNumber":174,"sourceCode":"\n    if (versionFromBuffer == VERSION) {\n      final int numBytes = buffer.get();\n      final int totalSize = buffer.getInt();\n      final int sizePer = buffer.getInt();\n\n      final CompressionStrategy compression = CompressionStrategy.forId(buffer.get());\n\n      return new CompressedVSizeColumnarIntsSupplier(\n          totalSize,\n          sizePer,\n          numBytes,\n          GenericIndexed.read(buffer, DecompressingByteBufferObjectStrategy.of(order, compression), mapper),\n          compression\n      );\n\n    }\n\n    throw new IAE(\"Unknown version[%s]\", versionFromBuffer);\n  }\n\n  @VisibleForTesting\n  public static CompressedVSizeColumnarIntsSupplier fromList(\n      final IntList list,\n      final int maxValue,\n      final int chunkFactor,\n      final ByteOrder byteOrder,\n      final CompressionStrategy compression,\n      final Closer closer\n  )\n  {\n    final int numBytes = VSizeColumnarInts.getNumBytesForMax(maxValue);\n    final int chunkBytes = chunkFactor * numBytes;\n\n    Preconditions.checkArgument(\n        chunkFactor <= maxIntsInBufferForBytes(numBytes),\n        \"Chunks must be <= 64k bytes. chunkFactor was[%s]\",","sourceCodeStart":156,"sourceCodeEnd":192,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/segment/data/CompressedVSizeColumnarIntsSupplier.java#L156-L192","documentation":"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.","triggerScenarios":"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.","commonSituations":"Version skew between ingestion and query nodes; reading segments copied manually from another cluster; tooling that parses segment files with wrong offsets.","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."],"exampleFix":"// before: fromByteBuffer(buffer) with buffer mid-way through the file\n// after: fromByteBuffer(columnStart.slice()) where columnStart points at the payload header","handlingStrategy":"validation","validationCode":"// Java\nint version = buf.get(buf.position());\nif (!SUPPORTED_VSIZE_INTS_VERSIONS.contains(version)) {\n  throw new IllegalArgumentException(\"Unsupported vSize column version \" + version);\n}","typeGuard":null,"tryCatchPattern":"try {\n  return CompressedVSizeColumnarIntsSupplier.fromByteBuffer(buf, order, mapper);\n} catch (IllegalArgumentException e) {\n  throw new SegmentSerializationException(\"Incompatible vSize int column\", e);\n}","preventionTips":["Keep segment writer and reader Druid versions compatible.","Position buffers at exact column payload starts.","Re-index segments after format-changing upgrades."],"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"}