Skip to content

[ISSUE #10861] Validate controller broker IDs eagerly - #10866

Open
yuluo-yx wants to merge 1 commit into
apache:developfrom
yuluo-yx:0808-yuluo/fix-18
Open

[ISSUE #10861] Validate controller broker IDs eagerly#10866
yuluo-yx wants to merge 1 commit into
apache:developfrom
yuluo-yx:0808-yuluo/fix-18

Conversation

@yuluo-yx

@yuluo-yx yuluo-yx commented Aug 8, 2026

Copy link
Copy Markdown
Member

Which Issue(s) This PR Fixes

Brief Description

CleanControllerBrokerMetaSubCommand built a lazy stream to parse controller broker IDs but never consumed it, so invalid values were not validated. This change eagerly parses every semicolon-separated ID before any admin request.

A regression test supplies 1;not-a-number and verifies that command execution rejects it with IllegalArgumentException.

How Did You Test This Change?

  • mise exec java@temurin-17.0.19+10 -- mvn -pl tools -am -DskipITs -Dtest=CleanControllerBrokerMetaSubCommandTest -Dsurefire.failIfNoSpecifiedTests=false -Dspotbugs.skip=true test
  • Result: BUILD SUCCESS; 1 test, 0 failures, 0 errors, 0 skipped.
  • Scope check: 2 files, 48 changed lines.

@RockteMQ-AI RockteMQ-AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary

Fixes a validation bypass where Arrays.stream(...).map(Long::parseLong) created a lazy stream that was never consumed (no terminal operation), so Long.parseLong was never called and invalid broker IDs passed silently.

Analysis

  • Correctness ✅ — The old code was a classic Java Streams pitfall: creating a stream pipeline without a terminal operation means nothing executes. Replacing with an eager for loop is the right fix — simpler and guaranteed to execute.
  • Tests ✅ — Regression test verifies that an invalid ID now throws NumberFormatException.
  • Performance ✅ — For a small list of broker IDs, a simple for loop is more efficient than stream creation overhead.
  • Compatibility ✅ — No API changes; strictly adds validation that should have been there.

LGTM.


Automated review by github-manager-bot

@yuluo-yx

yuluo-yx commented Aug 9, 2026

Copy link
Copy Markdown
Member Author

I confirmed the CI failure is not caused by this PR. Please rerun CI, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] cleanBrokerMetadata accepts malformed broker controller IDs

2 participants