t8y2/dbx · error
empty consumer status response from %s
Error message
empty consumer status response from %s
What it means
While iterating broker addresses, a nil response object (no body/failed remoting reply without an error) is recorded as lastErr with this message and the loop continues to the next broker, keeping partial results semantics.
Source
Thrown at agents/drivers/rocketmq/consumers.go:341
}
orderedAddresses := append([]string(nil), addresses...)
sort.Strings(orderedAddresses)
merged := make(map[string]map[string]int64)
successCount := 0
var lastErr error
for _, address := range orderedAddresses {
fields := map[string]string{"topic": topic, "group": groupID}
if clientAddr != "" {
fields["clientAddr"] = clientAddr
}
response, requestErr := invoke(ctx, address,
remoting.NewRequest(remoting.InvokeBrokerToGetConsumerStatus, fields))
if requestErr != nil {
lastErr = requestErr
continue
}
if response == nil {
lastErr = fmt.Errorf("empty consumer status response from %s", address)
continue
}
partial, decodeErr := decodeConsumerStatus(response.Body)
if decodeErr != nil {
lastErr = decodeErr
continue
}
successCount++
for _, clientID := range sortedKeys(partial) {
if merged[clientID] == nil {
merged[clientID] = make(map[string]int64)
}
for _, queueKey := range sortedKeys(partial[clientID]) {
merged[clientID][queueKey] = partial[clientID][queueKey]
}
}
}
if successCount == 0 {View on GitHub (pinned to c0390bff16)
Solutions
- Retry GetConsumeStatus — transient nil responses often clear on subsequent polls
- Check broker logs/health for the address named in the error
- Upgrade broker/client remoting versions if empty replies are reproducible
Example fix
// caller-side retry
status, err := agent.GetConsumeStatus(ctx, topic, group)
if err != nil {
status, err = agent.GetConsumeStatus(ctx, topic, group) // retry transient nil response
} Defensive patterns
Strategy: retry
Try / catch
status, err := GetConsumeStatus(ctx, topic, group)
if err != nil && strings.Contains(err.Error(), "empty consumer status response") {
if status, err = GetConsumeStatus(ctx, topic, group); err != nil {
return fmt.Errorf("consume status unavailable: %w", err)
}
} Prevention
- Retry status queries; broker replies can be transiently nil
- Check broker versions support InvokeBrokerToGetConsumerStatus
- Monitor broker load — overloaded brokers drop responses
When it happens
Trigger: A broker accepts the InvokeBrokerToGetConsumerStatus request but returns a nil response — broker overload, connection drop mid-call, or remoting layer returning nil on protocol failure.
Common situations: Broker under heavy load dropping replies; network flakiness between client and brokers; older broker versions replying malformed/empty to the status opcode; all brokers returning nil surfaces this as the final error.
Related errors
- no RocketMQ broker address found
- no RocketMQ master broker found for topic %s
- no RocketMQ master broker found for topic %s
- query messages for topic %s on all masters: %w
- invalid queue offset: %w
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/6949b80b6a48600d.
Report an issue: GitHub.