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
- Upgrade the reading Druid process to a version supporting the column's format version
- Re-ingest/re-merge the segment with the current reader-compatible Druid version so the column is written as V1
- Replace the segment from a good replica if the version byte appears corrupted
- 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
- Upgrade readers before introducing writers on a new Druid version in rolling upgrades
- Avoid downgrading historicals without first re-ingesting or dropping newer-format segments
- Keep a cluster-wide pinned druid-processing version in deployment tooling
- Alert on 'Unknown version' log lines during segment load; they indicate writer/reader skew
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
- Unknown version
- Unknown version
- Failed to deserialize V
- Failed to deserialize V
- Dictionary not serialized, cannot open value serializer
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)