fix(datanode): fetch region engine via get_engine for sync/remap operations (#7594)

fix(datanode): fetch region engine via get_engine for sync/remap

Signed-off-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
Weny Xu
2026-01-20 15:58:03 +08:00
committed by GitHub
parent 65e71d6f05
commit e7c19a87cd

View File

@@ -702,14 +702,18 @@ impl RegionServer {
region_id: RegionId,
request: SyncRegionFromRequest,
) -> Result<()> {
let engine_with_status = self
.inner
.region_map
.get(&region_id)
.with_context(|| RegionNotFoundSnafu { region_id })?;
let engine = match self.inner.get_engine(region_id, &RegionChange::None)? {
CurrentEngine::Engine(engine) => engine,
_ => {
return UnexpectedSnafu {
violated: "unexpected EarlyReturn engine status for a ready region",
}
.fail();
}
};
self.inner
.handle_sync_region(engine_with_status.engine(), region_id, request)
.handle_sync_region(&engine, region_id, request)
.await
}
@@ -719,14 +723,17 @@ impl RegionServer {
request: RemapManifestsRequest,
) -> Result<RemapManifestsResponse> {
let region_id = request.region_id;
let engine_with_status = self
.inner
.region_map
.get(&region_id)
.with_context(|| RegionNotFoundSnafu { region_id })?;
let engine = match self.inner.get_engine(region_id, &RegionChange::None)? {
CurrentEngine::Engine(engine) => engine,
_ => {
return UnexpectedSnafu {
violated: "unexpected EarlyReturn engine status for a ready region",
}
.fail();
}
};
engine_with_status
.engine()
engine
.remap_manifests(request)
.await
.with_context(|_| HandleRegionRequestSnafu { region_id })
@@ -838,15 +845,6 @@ impl RegionEngineWithStatus {
RegionEngineWithStatus::Ready(engine) => engine,
}
}
/// Returns [RegionEngineRef] reference.
pub fn engine(&self) -> &RegionEngineRef {
match self {
RegionEngineWithStatus::Registering(engine) => engine,
RegionEngineWithStatus::Deregistering(engine) => engine,
RegionEngineWithStatus::Ready(engine) => engine,
}
}
}
impl Deref for RegionEngineWithStatus {