meta_srv/procedure/repartition/
deallocate_region.rs1use std::any::Any;
16
17use common_procedure::{Context as ProcedureContext, Status};
18use serde::{Deserialize, Serialize};
19
20use crate::error::Result;
21use crate::procedure::repartition::repartition_end::RepartitionEnd;
22use crate::procedure::repartition::{Context, State};
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct DeallocateRegion;
26
27#[async_trait::async_trait]
28#[typetag::serde]
29impl State for DeallocateRegion {
30 async fn next(
31 &mut self,
32 ctx: &mut Context,
33 _procedure_ctx: &ProcedureContext,
34 ) -> Result<(Box<dyn State>, Status)> {
35 let region_to_deallocate = ctx
36 .persistent_ctx
37 .plans
38 .iter()
39 .map(|p| p.pending_deallocate_region_ids.len())
40 .sum::<usize>();
41 if region_to_deallocate == 0 {
42 return Ok((Box::new(RepartitionEnd), Status::done()));
43 }
44
45 todo!()
47 }
48
49 fn as_any(&self) -> &dyn Any {
50 self
51 }
52}