mirror of
https://github.com/apache/rocketmq.git
synced 2026-08-28 20:09:14 +08:00
7967edfc5e
* Cherry-pick partial changes from 67db1757df - BrokerMetricsManager refactoring - Excluded DefaultMappedFile, METRICS_REFACTORING_GUIDE.md, TimerMetrics, and RocksDB files per requirements - Successfully applied changes to most broker and store modules - Compilation errors in TimerMessageStore.java will be fixed in next commit * fix: Resolve metrics static variable conflicts in BrokerContainer mode Convert static metrics variables to instance-level to fix resource leaks and data conflicts in BrokerContainer scenarios with multiple broker instances. ## Problem Statement In BrokerContainer mode, multiple broker instances share static metrics variables from BrokerMetricsManager and DefaultStoreMetricsManager, causing: - Metrics data conflicts between different broker instances - Resource leaks during frequent addBroker/removeBroker operations - Incorrect metrics aggregation across multiple brokers ## Solution - Convert static metrics variables to instance-level variables - Add proper getter methods for external access - Ensure each broker instance maintains isolated metrics - Apply instanceof checks for type safety in TimerMessageStore ## Files Modified - broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java - store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java - METRICS_REFACTORING_GUIDE.md (documentation) ## Key Benefits ✅ Eliminates metrics conflicts between broker instances ✅ Prevents resource leaks in dynamic broker scenarios ✅ Maintains proper metrics isolation per broker ✅ Supports BrokerContainer mode with multiple brokers ✅ Backward compatible with existing functionality Resolves metrics static variable issues in multi-broker container environments. * Delete useless file * Fix test can not pass * Fix test can not pass