common_meta/reconciliation/reconcile_table/
reconciliation_end.rs1use std::any::Any;
16
17use common_procedure::{Context as ProcedureContext, Status};
18use common_telemetry::info;
19use serde::{Deserialize, Serialize};
20use tonic::async_trait;
21
22use crate::error::Result;
23use crate::reconciliation::reconcile_table::{ReconcileTableContext, State};
24
25#[derive(Debug, Serialize, Deserialize)]
28pub struct ReconciliationEnd;
29
30#[async_trait]
31#[typetag::serde]
32impl State for ReconciliationEnd {
33 async fn next(
34 &mut self,
35 ctx: &mut ReconcileTableContext,
36 procedure_ctx: &ProcedureContext,
37 ) -> Result<(Box<dyn State>, Status)> {
38 let table_id = ctx.table_id();
39 let table_name = ctx.table_name();
40 let metrics = ctx.metrics();
41
42 info!(
43 "Physical table reconciliation completed. table_name: {}, table_id: {}, procedure_id: {}, metrics: {}",
44 table_name, table_id, procedure_ctx.procedure_id, metrics
45 );
46
47 Ok((Box::new(ReconciliationEnd), Status::done()))
48 }
49
50 fn as_any(&self) -> &dyn Any {
51 self
52 }
53}