Files
rocketmq/store
rongtong 7967edfc5e [ISSUE #9677] Resolve metrics static variable conflicts in BrokerContainer mode (#9678)
* 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
2025-09-11 16:29:20 +08:00
..