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

  1. 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.
  2. 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)