mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-16 13:00:40 +00:00
refactor(meta): require explicit operating region roles
Signed-off-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user