1use std::sync::Arc;
16
17use common_meta::key::runtime_switch::RuntimeSwitchManager;
18use common_meta::kv_backend::KvBackendRef;
19use common_meta::state_store::KvStateStore;
20use common_procedure::ProcedureManagerRef;
21use common_procedure::local::{LocalManager, ManagerConfig};
22use common_procedure::options::ProcedureConfig;
23
24pub fn build_procedure_manager(
26 kv_backend: KvBackendRef,
27 procedure_config: ProcedureConfig,
28) -> ProcedureManagerRef {
29 let kv_state_store = Arc::new(KvStateStore::new(kv_backend.clone()));
30
31 let manager_config = ManagerConfig {
32 max_retry_times: procedure_config.max_retry_times,
33 retry_delay: procedure_config.retry_delay,
34 max_running_procedures: procedure_config.max_running_procedures,
35 ..Default::default()
36 };
37 let runtime_switch_manager = Arc::new(RuntimeSwitchManager::new(kv_backend));
38 Arc::new(LocalManager::new(
39 manager_config,
40 kv_state_store.clone(),
41 kv_state_store,
42 Some(runtime_switch_manager),
43 None,
44 ))
45}