apache/druid · error · IAE

Unknown version[%s]

Error message

Unknown version[%s]

What it means

CompressedColumnarDoublesSuppliers.fromByteBuffer throws IAE("Unknown version[%s]") when the version byte in the serialized compressed doubles column does not match a version this Druid build supports. It protects the reader from deserializing segment data written in an unknown format.

Source

Thrown at processing/src/main/java/org/apache/druid/segment/data/CompressedColumnarDoublesSuppliers.java:72

    if (versionFromBuffer == LZF_VERSION || versionFromBuffer == VERSION) {
      final int totalSize = buffer.getInt();
      final int sizePer = buffer.getInt();
      CompressionStrategy compression = CompressionStrategy.LZF;
      if (versionFromBuffer == VERSION) {
        byte compressionId = buffer.get();
        compression = CompressionStrategy.forId(compressionId);
      }
      return CompressionFactory.getDoubleSupplier(
          totalSize,
          sizePer,
          buffer.asReadOnlyBuffer(),
          order,
          compression,
          fileMapper
      );
    }
    throw new IAE("Unknown version[%s]", versionFromBuffer);
  }
}

View on GitHub (pinned to 9b90983fd2)

Solutions

  1. Upgrade the Druid nodes reading the segment to match (or exceed) the writer's version
  2. Re-ingest the segment with the current Druid version so it uses a supported column version
  3. Validate segment integrity on deep storage and re-download if bytes are corrupt
  4. Align cluster versions — ensure all historicals run the same Druid release

Example fix

// before: historical on old version reads new segment -> Unknown version
// after: upgrade historicals
// then reload segments; or re-index:
// druid> reindex segment with current ingest spec
Defensive patterns

Strategy: try-catch

Validate before calling

// check the column's version byte before loading
byte version = buffer.duplicate().get(0);
if (!SUPPORTED_DOUBLE_COLUMN_VERSIONS.contains(version)) {
  throw new IllegalStateException("Compressed doubles column version " + version + " unsupported; upgrade Druid");
}

Try / catch

try {
  supplier = CompressedColumnarDoublesSuppliers.fromByteBuffer(...);
} catch (IllegalArgumentException e) {
  if (e.getMessage().startsWith("Unknown version")) {
    throw new SegmentFormatException("Segment written by newer Druid; upgrade cluster or re-ingest", e);
  }
  throw e;
}

Prevention

When it happens

Trigger: Loading (mmapped) a compressed doubles column whose header version is unrecognized — typically segments written by a newer Druid release being read by an older build, or corrupt segment bytes.

Common situations: Downgraded or mixed-version clusters where historicals lag behind the coordinator's segment format; restoring segments from backups of newer versions; hand-crafted or damaged column files.

Related errors


AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07). Data as JSON: /api/errors/bf2f830900082503. Report an issue: GitHub.