{"record":{"id":"a90072bf4711e304","repo":"apache/druid","slug":"getposition-is-not-supported-in-rabbitmq-streams","errorCode":null,"errorMessage":"getPosition() is not supported in RabbitMQ streams","messagePattern":"getPosition\\(\\) is not supported in RabbitMQ streams","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"extensions-contrib/rabbit-stream-indexing-service/src/main/java/org/apache/druid/indexing/rabbitstream/RabbitStreamRecordSupplier.java","lineNumber":425,"sourceCode":"\n  @Override\n  public Long getLatestSequenceNumber(StreamPartition<String> partition)\n  {\n    return this.getRabbitEnvironment().queryStreamStats(partition.getPartitionId()).committedChunkId();\n  }\n\n  @Override\n  public boolean isOffsetAvailable(StreamPartition<String> partition, OrderedSequenceNumber<Long> offset)\n  {\n    final Long earliestOffset = getEarliestSequenceNumber(partition);\n    return earliestOffset != null\n        && offset.isAvailableWithEarliest(RabbitSequenceNumber.of(earliestOffset));\n  }\n\n  @Override\n  public Long getPosition(StreamPartition<String> partition)\n  {\n    throw new UnsupportedOperationException(\"getPosition() is not supported in RabbitMQ streams\");\n  }\n\n\n  public ClientParameters getParameters()\n  {\n    return new ClientParameters();\n  }\n\n  public Client getClient(ClientParameters parameters)\n  {\n    return new Client(parameters);\n  }\n\n  @Override\n  public Set<String> getPartitionIds(String stream)\n  {\n    ClientParameters parameters = getParameters();\n","sourceCodeStart":407,"sourceCodeEnd":443,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-contrib/rabbit-stream-indexing-service/src/main/java/org/apache/druid/indexing/rabbitstream/RabbitStreamRecordSupplier.java#L407-L443","documentation":"RabbitStreamRecordSupplier.getPosition is intentionally unsupported: RabbitMQ streams (unlike Kafka) do not expose a consumer position in the way Druid's RecordSupplier API expects. Calling this method is always a programming/configuration error — code using this supplier must rely on getLatestSequenceNumber/getEarliestSequenceNumber instead.","triggerScenarios":"Thrown at extensions-contrib/rabbit-stream-indexing-service/src/main/java/org/apache/druid/indexing/rabbitstream/RabbitStreamRecordSupplier.java:425 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Do not call getPosition with the RabbitMQ stream supplier; restructure the calling code to use getLatestSequenceNumber or getEarliestSequenceNumber.","If generic ingestion code requires position tracking, adapt it to the sequence-number semantics of RabbitMQ streams.","Report an upstream Druid issue if framework code calls getPosition unconditionally for stream-based suppliers."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}