fix(datanode): release region map guard before awaiting role changes (#9824)

Signed-off-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
Weny Xu
2026-10-21 11:55:44 +00:00
committed by GitHub
parent 5af1e3301e
commit 0dc649e028
+8 -1
View File
@@ -486,7 +486,14 @@ impl RegionServer {
region_id: RegionId,
state: SettableRegionRoleState,
) -> Result<SetRegionRoleStateResponse> {
match self.inner.region_map.get(&region_id) {
// Cloning releases the DashMap guard before awaiting the engine operation.
let engine = self
.inner
.region_map
.get(&region_id)
.map(|entry| entry.value().clone());
match engine {
Some(engine) => Ok(engine
.set_region_role_state_gracefully(region_id, state)
.await