apache/druid · error · UnsupportedOperationException
not supported
Error message
not supported
What it means
makeLoadSpec in the Cassandra deep-storage extension is deliberately unimplemented: Cassandra segments cannot be reconstructed from a bare URI, they load only via the c*-typed load spec produced during push. Any code path that asks this extension to build a load spec from a URI hits this unconditional guard.
Solutions
- Do not use URI-based segment loading with the Cassandra extension; ensure all segments were pushed via CassandraDataSegmentPusher so they carry the c* load spec.
- If historical servers must load segments from URIs, switch to a deep-storage implementation whose makeLoadSpec is supported.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at extensions-contrib/cassandra-storage/src/main/java/org/apache/druid/storage/cassandra/CassandraDataSegmentPusher.java:114 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/280a954fa5a905ad.
Report an issue: GitHub.
Appendix: source
Thrown at extensions-contrib/cassandra-storage/src/main/java/org/apache/druid/storage/cassandra/CassandraDataSegmentPusher.java:114
}
catch (Exception e) {
throw new IOException(e);
}
return segment.withSize(indexSize)
.withLoadSpec(ImmutableMap.of("type", "c*", "key", key))
.withBinaryVersion(version);
}
finally {
log.info("Deleting zipped index File[%s]", compressedIndexFile);
compressedIndexFile.delete();
}
}
@Override
public Map<String, Object> makeLoadSpec(URI uri)
{
throw new UnsupportedOperationException("not supported");
}
private boolean doesObjectExist(ChunkedStorageProvider provider, String objectName) throws Exception
{
try {
return ChunkedStorage.newInfoReader(provider, objectName).call().isValidForRead();
}
catch (NotFoundException e) {
return false;
}
}
}
View on GitHub (pinned to 9b90983fd2)