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

  1. Check the Druid version that wrote the segment and run the same (or migration-compatible) version to read it.
  2. Re-generate the segment from source data with the current Druid version instead of copying segment files across versions.
  3. Verify the ByteBuffer position/offset: the version byte must be the first byte of the supplier payload, not an arbitrary offset in the file.
  4. 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

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)