apache/druid · error · StreamException
Could not fetch partitions for topic/stream
Error message
Could not fetch partitions for topic/stream [%s]
What it means
RabbitStreamSupervisor.updatePartitionLagFromStream could not obtain the partition IDs for the configured stream — the record supplier threw while querying RabbitMQ. The supervisor logs a warning, releases the record-supplier lock, and rethrows as a StreamException, since partition lag cannot be computed without partitions. Common causes are connectivity failures or a nonexistent/deleted stream.
Solutions
- Inspect the wrapped exception for the root cause (connection refused, auth failure, stream not found).
- Verify the RabbitMQ stream exists and the configured username/password/port are correct.
- Check network reachability from the supervisor/overlord host to the RabbitMQ stream nodes.
- After fixing connectivity, the supervisor can re-attempt lag computation on the next cycle.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at extensions-contrib/rabbit-stream-indexing-service/src/main/java/org/apache/druid/indexing/rabbitstream/supervisor/RabbitStreamSupervisor.java:422 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/0edd5db16cf0f881.
Report an issue: GitHub.
Appendix: source
Thrown at extensions-contrib/rabbit-stream-indexing-service/src/main/java/org/apache/druid/indexing/rabbitstream/supervisor/RabbitStreamSupervisor.java:422
return new LagStats(0, 0, 0);
}
return aggregatePartitionLags(partitionRecordLag);
}
@Override
public void updatePartitionLagFromStream()
{
getRecordSupplierLock().lock();
Set<String> partitionIds;
try {
partitionIds = recordSupplier.getPartitionIds(getIoConfig().getStream());
}
catch (Exception e) {
log.warn("Could not fetch partitions for topic/stream [%s]", getIoConfig().getStream());
getRecordSupplierLock().unlock();
throw new StreamException(e);
}
Set<StreamPartition<String>> partitions = partitionIds
.stream()
.map(e -> new StreamPartition<>(getIoConfig().getStream(), e))
.collect(Collectors.toSet());
latestSequenceFromStream = partitions.stream()
.collect(Collectors.toMap(StreamPartition::getPartitionId, recordSupplier::getLatestSequenceNumber));
getRecordSupplierLock().unlock();
}
@Override
public Map<String, Long> getLatestSequencesFromStream()
{
return latestSequenceFromStream != null ? latestSequenceFromStream : new HashMap<>();View on GitHub (pinned to 9b90983fd2)