chuanxo opened a new issue, #10435:
URL: https://github.com/apache/rocketmq/issues/10435

   ### Before Creating the Bug Report
   
   - [x] I found a bug, not just asking a question, which should be created in 
[GitHub Discussions](https://github.com/apache/rocketmq/discussions).
   
   - [x] I have searched the [GitHub 
Issues](https://github.com/apache/rocketmq/issues) and [GitHub 
Discussions](https://github.com/apache/rocketmq/discussions)  of this 
repository and believe that this is not a duplicate.
   
   - [x] I have confirmed that this bug belongs to the current repository, not 
other repositories of RocketMQ.
   
   
   ### Runtime platform environment
   
   All (logic bug)
   
   ### RocketMQ version
   
   branch: develop
   commit: 7e0cec35a
   
   ### JDK Version
   
   _No response_
   
   ### Describe the Bug
   
   `ClientManageProcessor.heartBeat()` 在循环外只 new 了一个 `ClientChannelInfo`,然后在 
consumer/producer group 循环中复用同一个实例注册到各个 group。
   
   `ConsumerGroupInfo.updateChannel()` 会对传入对象调用 `setLastUpdateTimestamp()`。由于多个 
group 持有同一个对象引用,任意一个 group 的心跳都会刷新所有 group 的时间戳,导致 `scanNotActiveChannel()` 
永远判定 channel 未过期。
   
   ### Steps to Reproduce
   
   1. 客户端同时订阅 GroupA 和 GroupB(同一 clientId/channel)
   2. 客户端取消 GroupB 订阅,但进程仍在为 GroupA 发心跳
   3. Broker 侧 GroupB 的 channel 永远不会被清理
   
   ### What Did You Expect to See?
   
   GroupB 的 channel 在超过 channelExpiredTimeout 后被正常过期清理。
   
   ### What Did You See Instead?
   
   GroupB 的 channel 永远不过期,因为 GroupA 的心跳持续刷新了共享对象的 lastUpdateTimestamp。
   
   ### Additional Context
   
   _No response_


-- 
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