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]
