[ISSUE #1275]⚡️Optimize name server DefaultRequestProcessor#get_broker_member_group#1276
[ISSUE #1275]⚡️Optimize name server DefaultRequestProcessor#get_broker_member_group#1276rocketmq-rust-bot merged 1 commit intomainfrom
Conversation
WalkthroughThe changes in this pull request primarily involve the modification of broker ID data types across various components of the RocketMQ codebase. Specifically, the broker ID type is transitioned from signed 64-bit integers ( Changes
Assessment against linked issues
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
|
🔊@mxsm 🚀Thanks for your contribution 🎉. CodeRabbit(AI) will review your code first 🔥 |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1276 +/- ##
==========================================
- Coverage 18.98% 18.98% -0.01%
==========================================
Files 428 428
Lines 53846 53842 -4
==========================================
- Hits 10224 10221 -3
+ Misses 43622 43621 -1 ☔ View full report in Codecov by Sentry. 🚨 Try these New Features:
|
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Outside diff range and nitpick comments (5)
rocketmq-remoting/src/protocol/header/namesrv/brokerid_change_request_header.rs (2)
Line range hint
119-143: Critical: Remove duplicate ha_broker_addr insertion in to_map()There's a bug in the
to_map()implementation whereha_broker_addris inserted into the map twice. This could lead to unnecessary operations and potential confusion.Apply this diff to fix the issue:
if let Some(ref offline_broker_addr) = self.offline_broker_addr { map.insert( CheetahString::from_static_str( NotifyMinBrokerIdChangeRequestHeader::OFFLINE_BROKER_ADDR, ), offline_broker_addr.clone(), ); } - if let Some(ref ha_broker_addr) = self.ha_broker_addr { - map.insert( - CheetahString::from_static_str( - NotifyMinBrokerIdChangeRequestHeader::HA_BROKER_ADDR, - ), - ha_broker_addr.clone(), - ); - }
Line range hint
85-87: Implement check_fields() methodThe
check_fields()method is currently unimplemented. Consider implementing field validation to ensure data integrity.Would you like me to help implement the field validation logic for this struct?
rocketmq-namesrv/src/route_info/broker_addr_info.rs (1)
Line range hint
151-151: Consider adding test cases for larger broker IDsWhile the existing test case works with small broker IDs, consider adding test cases with larger
u64values to ensure proper handling of the full range of possible broker IDs.Add test cases like:
broker_addrs.insert(u64::MAX, "192.168.1.1".into()); broker_addrs.insert(1 << 32, "192.168.1.1".into());rocketmq-remoting/src/rpc/client_metadata.rs (1)
46-46: Consider using a newtype pattern for broker IDsTo improve type safety and make the code more maintainable, consider introducing a newtype wrapper for broker IDs:
#[derive(Debug, Clone, Copy, Hash, Eq, PartialEq)] pub struct BrokerId(pub u64);This would:
- Make the code more type-safe
- Allow for future extensions without changing the API
- Make broker ID related operations more explicit
Also applies to: 233-233
rocketmq-broker/src/out_api/broker_outer_api.rs (1)
Line range hint
170-178: Consider backward compatibility implicationsThe transition from
i64tou64for broker IDs may require careful consideration of:
- Compatibility with existing brokers in the cluster
- Data migration strategy for existing broker IDs
- Protocol version handling for mixed-version deployments
Consider documenting these changes in the upgrade guide and ensuring proper version compatibility checks are in place.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (8)
rocketmq-broker/src/out_api/broker_outer_api.rs(1 hunks)rocketmq-client/src/factory/mq_client_instance.rs(7 hunks)rocketmq-namesrv/src/route/route_info_manager.rs(12 hunks)rocketmq-namesrv/src/route_info/broker_addr_info.rs(2 hunks)rocketmq-remoting/src/protocol/header/namesrv/brokerid_change_request_header.rs(3 hunks)rocketmq-remoting/src/protocol/header/namesrv/register_broker_header.rs(3 hunks)rocketmq-remoting/src/protocol/route/route_data_view.rs(5 hunks)rocketmq-remoting/src/rpc/client_metadata.rs(3 hunks)
🔇 Additional comments (22)
rocketmq-remoting/src/protocol/header/namesrv/brokerid_change_request_header.rs (3)
37-37: LGTM! Constructor signature updated correctly.
The constructor parameter type change aligns with the struct field type change.
62-62: LGTM! Parsing updated correctly for unsigned integers.
The parsing logic has been correctly updated to match the new u64 type.
14-14: LGTM! Verify type consistency across broker ID usages.
The change from i64 to u64 is logical since broker IDs should never be negative. However, as this is a breaking change, we should verify consistency across the codebase.
rocketmq-remoting/src/protocol/route/route_data_view.rs (5)
56-56: LGTM! Constructor signature updated consistently.
The constructor parameter type change aligns with the field type change while maintaining the same initialization logic.
76-76: LGTM! Setter method signature updated consistently.
The setter method parameter type change aligns with the field type change while maintaining the same assignment logic.
97-97: LGTM! Getter method signatures updated consistently.
Both immutable and mutable getter methods have been updated to reflect the new type while maintaining the same access patterns.
Also applies to: 101-101
105-108: LGTM! Method signature and implementation updated consistently.
The parameter type change aligns with the field type change while maintaining the same filtering logic in the retain operation.
119-119: Verify mix_all::MASTER_ID type definition.
The removal of explicit casting suggests mix_all::MASTER_ID is now u64. Let's verify this constant's type definition.
✅ Verification successful
Constant type matches the usage - no cast needed
The verification confirms that mix_all::MASTER_ID is defined as u64 in rocketmq-common/src/common/mix_all.rs, which matches the type expected by the broker_addrs HashMap. Therefore, the removal of explicit casting is correct.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for MASTER_ID definition in mix_all module
rg -g '*.rs' -A 2 -B 2 'MASTER_ID.*=|pub.*MASTER_ID'
Length of output: 1309
rocketmq-namesrv/src/route_info/broker_addr_info.rs (2)
58-58: LGTM! Constructor signature updated correctly
The constructor parameter type has been properly updated to match the struct field type change.
69-74: LGTM! Getter and setter methods updated consistently
Both accessor methods have been properly updated to use u64 while maintaining their original functionality and visibility levels.
rocketmq-remoting/src/rpc/client_metadata.rs (1)
140-140: Verify MASTER_ID constant type in mix_all module
The removal of type casting suggests that MASTER_ID in mix_all module should be of type u64. Let's verify this to ensure type consistency.
✅ Verification successful
MASTER_ID constant is correctly defined as u64 in mix_all module
The verification confirms that MASTER_ID is defined as u64 in rocketmq-common/src/common/mix_all.rs, which is consistent with the removal of type casting in the code under review. The constant's type matches the expected usage.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for MASTER_ID constant definition
rg -A 2 'MASTER_ID.*=.*' --type rust
# Check if MASTER_ID is used with type casting elsewhere
rg 'MASTER_ID.*as.*[iu]64' --type rust
Length of output: 912
rocketmq-remoting/src/protocol/header/namesrv/register_broker_header.rs (3)
49-49:
This type change prevents negative broker IDs and is a breaking change that requires updates in all code using this struct.
Let's verify the impact across the codebase:
154-155: Verify error handling for broker_id parsing
The default value of 0 for parsing errors is maintained. Consider if this is the desired behavior or if explicit error handling would be more appropriate.
Let's check for similar parsing patterns:
✅ Verification successful
Based on the analysis of the codebase, I can now provide a final response:
Using default value of 0 for broker_id is appropriate in this context
The default value of 0 for broker_id parsing is the correct behavior here because:
- It's consistently used across similar parsing patterns in the codebase for numeric fields when dealing with broker and queue IDs
- The broker_id field is a required field in the RegisterBrokerRequestHeader struct, and the default value is only used during deserialization from a map
- The actual broker registration process uses the constructor
new()which requires an explicit broker_id value, making the default value only relevant for the FromMap trait implementation - This pattern aligns with RocketMQ's broker identification system where 0 is a valid broker ID value
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for similar parsing patterns with unwrap_or(0)
rg 'parse::<u64>\(\)\.ok\(\)\.unwrap_or\(0\)'
Length of output: 47
Script:
#!/bin/bash
# Let's search for similar parsing patterns with a broader context
rg -A 2 -B 2 'parse::<u64>'
# Also search for similar patterns with unwrap_or
rg -A 2 -B 2 'unwrap_or\(0\)'
# Let's also check the specific file for context
cat rocketmq-remoting/src/protocol/header/namesrv/register_broker_header.rs
Length of output: 38932
101-101: Migration required: Update broker_id parsing and constructor calls
The constructor signature and FromMap implementation have been updated to use u64. Ensure all calling code is updated to:
- Pass non-negative values to the constructor
- Handle string parsing appropriately in custom FromMap implementations
Let's verify the constructor usage:
Also applies to: 154-155
rocketmq-namesrv/src/route/route_info_manager.rs (3)
116-116: LGTM: Improved type safety with unsigned integers
The change from i64 to u64 for broker_id is appropriate since broker IDs are always non-negative. This improves type safety and better represents the domain.
Line range hint 159-167: LGTM: Correct handling of unsigned broker IDs
The initialization and comparison of broker IDs properly handle the unsigned integer type. The logic for detecting minimum broker ID changes remains correct with the type change.
670-674: LGTM: Efficient optimization of get_broker_member_group
The method has been effectively optimized by:
- Using a read lock instead of a write lock, allowing concurrent reads
- Minimizing the critical section
- Directly cloning the broker addresses
rocketmq-client/src/factory/mq_client_instance.rs (5)
787-789: LGTM! Type-safe comparison with MASTER_ID.
The comparison with mix_all::MASTER_ID is now properly typed as u64.
800-802: LGTM! Consistent function signature updates.
The broker ID parameter type has been consistently updated to u64 in both functions:
send_heartbeat_to_brokersend_heartbeat_to_broker_inner
Also applies to: 829-832
1050-1054: LGTM! Type-safe broker ID operations.
The broker ID operations have been properly updated to work with u64:
- Comparison with
mix_all::MASTER_ID - Increment operation
broker_id + 1
Also applies to: 1060-1062
1220-1222: LGTM! Consistent map access with u64 broker ID.
The broker address map access using mix_all::MASTER_ID is properly typed as u64.
755-755: Verify MASTER_ID constant type definition.
Ensure that mix_all::MASTER_ID is defined as u64 to match the new broker ID type.
✅ Verification successful
MASTER_ID constant type matches the expected u64 type
Found the constant definition in rocketmq-common/src/common/mix_all.rs:
pub const MASTER_ID: u64 = 0;The constant is correctly defined as u64 type, which matches the broker ID type used in the code under review.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check MASTER_ID constant definition
# Search for MASTER_ID constant definition
ast-grep --pattern 'const MASTER_ID: $type = $_'
Length of output: 50
Script:
#!/bin/bash
# Let's try a broader search for MASTER_ID constant using ripgrep
rg "MASTER_ID" -A 2 -B 2
Length of output: 16832
| broker_name: CheetahString, | ||
| #[serde(rename = "brokerAddrs")] | ||
| broker_addrs: HashMap<i64 /* broker id */, CheetahString /* broker ip */>, | ||
| broker_addrs: HashMap<u64 /* broker id */, CheetahString /* broker ip */>, |
There was a problem hiding this comment.
💡 Codebase verification
Based on the search results, I can now generate the final response:
Broker ID type inconsistency detected across codebase
The change from i64 to u64 for broker IDs is incomplete. While route_data_view.rs and several other components use u64, there are still multiple components using i64:
namesrv/broker_request.rs: UsesOption<i64>for broker_idbroker_heartbeat_request_header.rs: UsesOption<i64>for broker_iddefault_message_store.rs: Usesbroker_init_max_offset: Arc<AtomicI64>
This mixed usage could lead to type conversion issues and potential runtime errors. The type change should be consistently applied across all broker ID related fields.
🔗 Analysis chain
LGTM! Verify consistent usage across codebase.
The change from i64 to u64 for broker IDs is logical since broker IDs should never be negative. However, as this is a breaking change, we should verify all consumers are updated.
Let me analyze the findings and generate additional verification scripts to understand the full context of these changes.
The first script will help us understand if there's a mix of u64 and i64 being used for broker IDs, while the second will show us the complete context of route data related files where this change is being made. This will help determine if this is an intentional partial change or if we need to flag inconsistencies.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for any remaining i64 broker ID usages that might need updating
rg -g '*.rs' -A 2 -B 2 'broker.*[^u]64|[^u]64.*broker'
Length of output: 7835
Script:
#!/bin/bash
# Search for u64 broker ID usages to compare with i64 findings
rg -g '*.rs' -A 2 -B 2 'broker.*u64|u64.*broker'
# Search for broker ID type declarations in route data related files
fd -e rs route_data route -x cat {}
Length of output: 21177
| #[derive(Clone, Debug)] | ||
| pub(crate) struct BrokerStatusChangeInfo { | ||
| pub(crate) broker_addrs: HashMap<i64, CheetahString>, | ||
| pub(crate) broker_addrs: HashMap<u64, CheetahString>, |
There was a problem hiding this comment.
💡 Codebase verification
Type inconsistency detected in broker ID transition
The verification reveals an incomplete transition of broker ID types from i64 to u64. While some parts of the codebase have been updated to use u64, there are still components using i64, particularly in the remoting layer:
-
Using
u64:BrokerStatusChangeInfoand most new implementations- Route info manager and broker configuration
- Register broker headers
-
Still using
i64:broker_idinrocketmq-remoting/src/protocol/header/namesrv/broker_request.rsbroker_idinrocketmq-remoting/src/protocol/header/broker/broker_heartbeat_request_header.rs
This inconsistency could lead to type conversion issues and potential runtime errors. The change should be coordinated across all broker ID usages to maintain type consistency.
🔗 Analysis chain
LGTM! Verify all usage sites of BrokerStatusChangeInfo
The change from i64 to u64 for broker IDs is logical since broker IDs should never be negative. This type change provides better semantic meaning and prevents potential misuse.
Let's verify all usage sites of this struct to ensure consistent type usage:
Type mismatch found in broker ID usage across the codebase
The verification reveals inconsistent broker ID types across the codebase:
BrokerStatusChangeInfousesu64for broker IDs- Several other components still use
i64:broker_idinrocketmq-remoting/src/protocol/header/namesrv/broker_request.rsbroker_idinrocketmq-remoting/src/protocol/header/broker/broker_heartbeat_request_header.rs
Let's verify if this change is part of an ongoing transition by checking recent changes:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for all usages of BrokerStatusChangeInfo to verify type consistency
rg -A 3 "BrokerStatusChangeInfo"
# Search for any remaining i64 broker IDs that might need updating
rg "broker.*[^u]64|[^u]64.*broker"
Length of output: 5091
Script:
#!/bin/bash
# Check recent changes to broker ID types
rg -g '*.rs' -B 2 -A 2 'broker.*id.*[:=].*[ui]64'
# Check if there are any pending PRs or related issues
gh pr list --search "broker id type"
Length of output: 12917
| HashMap< | ||
| CheetahString, /* Broker Name */ | ||
| HashMap<i64 /* brokerId */, CheetahString /* address */>, | ||
| HashMap<u64 /* brokerId */, CheetahString /* address */>, |
There was a problem hiding this comment.
💡 Codebase verification
Inconsistent broker ID type usage detected across the codebase
The verification reveals inconsistent broker ID type usage:
-
Files still using
i64:rocketmq-remoting/src/protocol/header/broker/broker_heartbeat_request_header.rsrocketmq-remoting/src/protocol/header/namesrv/broker_request.rs
-
Files using
u64:rocketmq-remoting/src/protocol/subscription/subscription_group_config.rsrocketmq-remoting/src/protocol/header/namesrv/register_broker_header.rs- Multiple other files in the codebase
This type inconsistency could lead to runtime issues and type conversion bugs. The migration from i64 to u64 for broker IDs needs to be completed across all related components.
🔗 Analysis chain
Verify broker ID type consistency across the codebase
The change from i64 to u64 for broker IDs is logical since broker IDs should never be negative. However, we need to ensure this change is consistently applied across all related components.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for any remaining i64 broker ID declarations
rg -A 2 'broker.*id.*:.*i64' --type rust
# Search for broker ID type declarations to verify consistency
rg -A 2 'broker.*id.*:.*u64' --type rust
# Search for potential type casting between i64 and u64 for broker IDs
rg 'as.*i64.*broker|as.*u64.*broker' --type rust
Length of output: 8227
| pub fn broker_addr_table( | ||
| &self, | ||
| ) -> Arc<RwLock<HashMap<CheetahString, HashMap<i64, CheetahString>>>> { | ||
| ) -> Arc<RwLock<HashMap<CheetahString, HashMap<u64, CheetahString>>>> { |
There was a problem hiding this comment.
💡 Codebase verification
Based on the verification results, I can now generate the final response:
Document breaking change in broker_addr_table API
The change from i64 to u64 for broker IDs in the broker_addr_table method is a breaking change that needs documentation. Add API documentation to:
- Document the type change in the method signature
- Explain the rationale for using unsigned integers for broker IDs
- Provide migration guidance for existing code using
i64broker IDs
🔗 Analysis chain
Document breaking change in API
The return type change from i64 to u64 is a breaking change that needs to be documented. Consider adding a changelog entry or migration guide for API consumers.
Let me generate additional verification scripts to check for any documentation of this breaking change.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check for changelog or documentation files
fd -e md -e txt -e rst | xargs rg -l 'broker.*id.*[ui]64|breaking.*change'
# Look for potential API documentation
fd -e rs | xargs rg '///' -A 2 -B 2
Length of output: 130529
Script:
#!/bin/bash
# Look for changelog or documentation files in the root directory
fd -e md -e txt -e rst | xargs rg -l 'broker.*id.*[ui]64|breaking.*change'
# Look for documentation in the remoting module
fd -e rs -p rocketmq-remoting | xargs rg '///' -A 2 -B 2 | rg -B 2 -A 2 'broker_addr_table|CheetahString|HashMap'
# Check git history for related changes
git log -p rocketmq-remoting/src/rpc/client_metadata.rs | rg -B 3 -A 3 'broker_addr_table'
Length of output: 9433
| let mut request_header = RegisterBrokerRequestHeader { | ||
| broker_addr, | ||
| broker_id: broker_id as i64, | ||
| broker_id, |
There was a problem hiding this comment.
💡 Codebase verification
Inconsistent broker_id type usage detected across the codebase
The verification reveals inconsistent broker_id type usage:
- Several files still use
Option<i64>for broker_id:rocketmq-remoting/src/protocol/header/broker/broker_heartbeat_request_header.rsrocketmq-remoting/src/protocol/header/namesrv/broker_request.rs
- Most of the codebase has transitioned to
u64, including critical components like:rocketmq-remoting/src/protocol/header/namesrv/register_broker_header.rsrocketmq-common/src/common/broker/broker_config.rsrocketmq-namesrv/src/route/route_info_manager.rs
These remaining i64 usages should be updated to maintain type consistency and prevent potential conversion issues.
🔗 Analysis chain
Verify broker ID type consistency across the codebase
The removal of as i64 type cast aligns with the transition from i64 to u64 for broker IDs. This change improves type safety by avoiding unnecessary conversions.
Let's verify the broker ID type consistency across the codebase:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for any remaining i64 broker ID usages that might need updating
# and verify that RegisterBrokerRequestHeader consistently uses u64
# Check for any remaining i64 broker ID declarations
rg -g '*.rs' 'broker_id.*:.*i64'
# Check RegisterBrokerRequestHeader struct definition
ast-grep --pattern 'struct RegisterBrokerRequestHeader {
$$$
broker_id: $type,
$$$
}'
# Look for other broker ID type declarations to ensure consistency
rg -g '*.rs' 'broker_id.*:.*u64'
Length of output: 2781
| fn notify_min_broker_id_changed( | ||
| &self, | ||
| broker_addr_map: &HashMap<i64, CheetahString>, | ||
| broker_addr_map: &HashMap<u64, CheetahString>, |
There was a problem hiding this comment.
💡 Codebase verification
Type inconsistency found: Mixed usage of i64 and u64 for broker_id
The verification reveals inconsistent broker ID type usage across the codebase:
rocketmq-remoting/protocol/header/namesrv/broker_request.rsandbroker_heartbeat_request_header.rsuseOption<i64>- While the route info manager and most other files use
u64
This type mismatch could lead to potential conversion issues or runtime errors. The codebase should consistently use either signed or unsigned integers for broker IDs.
🔗 Analysis chain
LGTM: Consistent unsigned integer usage across the codebase
The broker ID type change has been consistently applied throughout the codebase. All methods handling broker IDs now properly use u64, maintaining type consistency and safety.
Also applies to: 638-638, 915-915, 951-959
Let me verify the broker ID type usage more comprehensively.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Verify consistent usage of u64 for broker IDs
rg -A 1 "broker_id.*:.*i64|broker_id.*=.*i64"
Length of output: 872
Script:
#!/bin/bash
# Check all broker_id type declarations and usages
rg -A 1 "broker_id.*:.*u64|broker_id.*=.*u64"
# Check the specific file for broker_id type declarations
rg -A 1 "broker_id" rocketmq-namesrv/src/route/route_info_manager.rs
Length of output: 8176
| pub(crate) default_producer: ArcMut<DefaultMQProducer>, | ||
| instance_runtime: Arc<RocketMQRuntime>, | ||
| broker_addr_table: Arc<RwLock<HashMap<CheetahString, HashMap<i64, CheetahString>>>>, | ||
| broker_addr_table: Arc<RwLock<HashMap<CheetahString, HashMap<u64, CheetahString>>>>, |
There was a problem hiding this comment.
💡 Codebase verification
Type inconsistency found in broker ID declarations
The verification reveals inconsistent broker ID type usage across the codebase:
-
Some files still use
i64:rocketmq-remoting/src/protocol/header/namesrv/broker_request.rsrocketmq-remoting/src/protocol/header/broker/broker_heartbeat_request_header.rs
-
While others have been updated to
u64:rocketmq-common/src/common/mix_all.rs(MASTER_ID constant)rocketmq-remoting/src/protocol/header/namesrv/register_broker_header.rsrocketmq-client/src/factory/mq_client_instance.rs
This type inconsistency needs to be addressed to prevent potential type conversion issues and maintain codebase consistency.
🔗 Analysis chain
LGTM! Verify type consistency across the codebase.
The change from i64 to u64 for broker IDs in the broker_addr_table makes sense as broker IDs should never be negative.
Let's verify the broker ID type consistency:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for any remaining i64 broker ID usages that might need updating
# Search for broker ID type declarations
rg -A 2 "broker_id.*:.*i64"
# Search for MASTER_ID constant usage with i64
rg "MASTER_ID.*:.*i64"
Length of output: 1301
Script:
#!/bin/bash
# Let's check for u64 broker ID usages to understand the transition
rg -A 2 "broker_id.*:.*u64"
# Also check for any direct broker ID comparisons or operations
rg "broker_id.*[=><]"
# Check for MASTER_ID constant definition
rg "MASTER_ID.*=.*[0-9]"
Length of output: 11730
Which Issue(s) This PR Fixes(Closes)
Fixes #1275
Brief Description
How Did You Test This Change?
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Documentation