Skip to content

[Bug] BrokerData.selectBrokerAddr crashes for an empty address table #10873

Description

@yuluo-yx

Before Creating the Bug Report

  • I found a bug, not just a question.
  • I searched open GitHub Issues and pull requests and found no duplicate.
  • I confirmed that this bug belongs to Apache RocketMQ.

Runtime platform environment

macOS (Darwin), reproduced with an isolated local unit test.

RocketMQ version

Branch: develop
Git commit: fd0c959

JDK Version

Zulu OpenJDK 8 (8.94.0.17)

Describe the Bug

BrokerData.selectBrokerAddr assumes brokerAddrs is non-null and non-empty. A default BrokerData instance throws NullPointerException, while an empty map reaches Random.nextInt(0) and throws IllegalArgumentException.

Steps to Reproduce

  1. Create a default BrokerData and call selectBrokerAddr.
  2. Alternatively, set brokerAddrs to an empty HashMap and call selectBrokerAddr.
  3. Observe the exception.

What Did You Expect to See?

The method should return null when no broker address is registered, consistent with its nullable selection result.

What Did You See Instead?

The method throws for both null and empty address tables.

Additional Context

Master preference and slave fallback remain valid; only the no-address boundary is affected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions