apache/druid · error · org.apache.druid.java.util.common.RE

Unknown version

Error message

Unknown version 

What it means

ScalarLongColumnAndIndexSupplier.read() only recognizes the nested long-column versions it implements (V1). If the version byte read from the segment does not match any supported version, it throws this generic String to signal the on-disk format is unknown to this reader.

Solutions

  1. Upgrade the reading Druid process to a version supporting the column's format version
  2. Re-ingest/re-merge the segment with the current reader-compatible Druid version so the column is written as V1
  3. Replace the segment from a good replica if the version byte appears corrupted
  4. Align druid-processing versions across all nodes writing and reading segments
Defensive patterns

Strategy: try-catch

Validate before calling

// Reject segments from unknown writer versions before loading them
if (compareVersions(segmentMetadata.getVersion(), maxReaderSupportedVersion) > 0) {
  throw new IllegalStateException("Segment version " + segmentMetadata.getVersion()
      + " > supported " + maxReaderSupportedVersion + "; upgrade or re-ingest");
}

Try / catch

try {
  // load nested long column
} catch (RuntimeException e) {
  if (e.getMessage() != null && e.getMessage().startsWith("Unknown version")) {
    LOG.warn(e, "Unknown nested-column version; marking segment for re-ingest");
    segmentRegistry.markForReingest(segmentId);
  } else {
    throw e;
  }
}

Prevention

When it happens

Trigger: Reading a nested long column written with a version byte newer than this Druid version supports; corrupted segment file where the version byte is invalid.

Common situations: Cluster version skew during upgrades (new writer, old reader); downgraded historicals reading segments produced after a format change; damaged segment files.

Related errors


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

Appendix: source

Thrown at processing/src/main/java/org/apache/druid/segment/nested/ScalarLongColumnAndIndexSupplier.java:171

        final Supplier<ColumnarLongs> longs = CompressedColumnarLongsSupplier.fromByteBuffer(
            longsValueColumn,
            byteOrder,
            columnBuilder.getFileMapper()
        );
        return new ScalarLongColumnAndIndexSupplier(
            longDictionarySupplier,
            encodedCol,
            longs,
            rBitmaps,
            bitmapSerdeFactory.getBitmapFactory(),
            columnConfig
        );
      }
      catch (IOException ex) {
        throw new RE(ex, "Failed to deserialize V%s column.", version);
      }
    } else {
      throw new RE("Unknown version " + version);
    }
  }

  private final Supplier<FixedIndexed<Long>> longDictionarySupplier;

  private final Supplier<ColumnarInts> encodedValuesSupplier;
  private final Supplier<ColumnarLongs> valueColumnSupplier;

  private final GenericIndexed<ImmutableBitmap> valueIndexes;

  private final BitmapFactory bitmapFactory;

  private final ImmutableBitmap nullValueBitmap;
  private final ColumnConfig columnConfig;

  private ScalarLongColumnAndIndexSupplier(
      Supplier<FixedIndexed<Long>> longDictionarySupplier,
      Supplier<ColumnarInts> encodedValuesSupplier,

View on GitHub (pinned to 9b90983fd2)