yuluo-yx opened a new issue, #10875:
URL: https://github.com/apache/rocketmq/issues/10875

   ### Before Creating the Bug Report
   
   - [x] I found a bug, not just a question.
   - [x] I searched open GitHub Issues and pull requests and found no duplicate.
   - [x] 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: fd0c95920e0deac96ce2ae27442747cc5e65e930
   
   ### JDK Version
   
   Zulu OpenJDK 8 (8.94.0.17)
   
   ### Describe the Bug
   
   RaftReplicasInfoManager.checkNotActiveBroker passes the negation of 
isBrokerActive as the valid-broker predicate to scanNeedReelectBrokerSets. That 
scanner already treats a false predicate result as inactive. The double 
inversion marks an expired master as valid and can omit the broker set from the 
re-election response even when a slave is alive.
   
   ### Steps to Reproduce
   
   1. Configure a broker set with broker ID 1 as master and broker ID 2 as 
slave.
   2. Keep only the slave active in brokerLiveTable.
   3. Call checkNotActiveBroker.
   4. Decode the response body and inspect the broker sets needing re-election.
   
   ### What Did You Expect to See?
   
   The response should report the broker set so the inactive master can be 
re-elected.
   
   ### What Did You See Instead?
   
   The broker set is omitted because the inactive master is treated as 
satisfying the valid-broker predicate.
   
   ### Additional Context
   
   The controller behavior is reproduced in RaftReplicasInfoManagerTest.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to