refactor(meta): require explicit operating region roles

Signed-off-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
WenyXu
2026-04-15 09:05:00 +00:00
parent 06bf581cc7
commit 05a3ccd70b
5 changed files with 20 additions and 18 deletions

View File

@@ -59,15 +59,6 @@ impl MemoryRegionKeeper {
Default::default()
}
/// Returns [OperatingRegionGuard] if Region(`region_id`) on Peer(`datanode_id`) does not exist.
pub fn register(
&self,
datanode_id: DatanodeId,
region_id: RegionId,
) -> Option<OperatingRegionGuard> {
self.register_with_role(datanode_id, region_id, RegionRole::Leader)
}
/// Returns [OperatingRegionGuard] if Region(`region_id`) on Peer(`datanode_id`) does not exist.
pub fn register_with_role(
&self,
@@ -159,8 +150,14 @@ mod tests {
fn test_opening_region_keeper() {
let keeper = MemoryRegionKeeper::new();
let guard = keeper.register(1, RegionId::from_u64(1)).unwrap();
assert!(keeper.register(1, RegionId::from_u64(1)).is_none());
let guard = keeper
.register_with_role(1, RegionId::from_u64(1), RegionRole::Leader)
.unwrap();
assert!(
keeper
.register_with_role(1, RegionId::from_u64(1), RegionRole::Leader)
.is_none()
);
let guard2 = keeper
.register_with_role(1, RegionId::from_u64(2), RegionRole::Follower)
.unwrap();

View File

@@ -281,7 +281,7 @@ mod test {
let opening_region_id = RegionId::new(table_id, region_number + 2);
let _guard = opening_region_keeper
.register(follower_peer.id, opening_region_id)
.register_with_role(follower_peer.id, opening_region_id, RegionRole::Follower)
.unwrap();
let acc = &mut HeartbeatAccumulator::default();

View File

@@ -297,7 +297,7 @@ mod tests {
let mut ctx = env.context_factory().new_context(persistent_context);
let opening_region_keeper = env.opening_region_keeper();
let _guard = opening_region_keeper
.register(to_peer_id, region_id)
.register_with_role(to_peer_id, region_id, RegionRole::Follower)
.unwrap();
let open_instruction = new_mock_open_instruction(to_peer_id, region_id);

View File

@@ -231,6 +231,7 @@ mod tests {
use common_meta::region_keeper::MemoryRegionKeeper;
use common_meta::rpc::router::{LeaderState, Region, RegionRoute};
use common_time::util::current_time_millis;
use store_api::region_engine::RegionRole;
use store_api::storage::RegionId;
use crate::error::Error;
@@ -467,7 +468,7 @@ mod tests {
}];
let guard = opening_keeper
.register(2, RegionId::new(table_id, 1))
.register_with_role(2, RegionId::new(table_id, 1), RegionRole::Follower)
.unwrap();
ctx.volatile_ctx.opening_region_guards.push(guard);

View File

@@ -376,12 +376,16 @@ mod tests {
let opening_region_id = RegionId::new(1025, 1);
let _guard = keeper
.memory_region_keeper
.register(leader_peer_id, opening_region_id)
.register_with_role(leader_peer_id, opening_region_id, RegionRole::Leader)
.unwrap();
let another_opening_region_id = RegionId::new(1025, 2);
let _guard2 = keeper
.memory_region_keeper
.register(follower_peer_id, another_opening_region_id)
.register_with_role(
follower_peer_id,
another_opening_region_id,
RegionRole::Follower,
)
.unwrap();
let (metadata, regions) = keeper
@@ -481,7 +485,7 @@ mod tests {
let opening_region_id = RegionId::new(2048, 1);
let _guard = keeper
.memory_region_keeper
.register(leader_peer_id, opening_region_id)
.register_with_role(leader_peer_id, opening_region_id, RegionRole::Leader)
.unwrap();
// The opening region on the datanode.
@@ -683,7 +687,7 @@ mod tests {
let _guard = keeper
.memory_region_keeper
.register(datanode_id, region_id)
.register_with_role(datanode_id, region_id, RegionRole::Leader)
.unwrap();
let RenewRegionLeasesResponse {