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

  1. Retry GetConsumeStatus — transient nil responses often clear on subsequent polls
  2. Check broker logs/health for the address named in the error
  3. 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

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


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/6949b80b6a48600d. Report an issue: GitHub.