feat: make RepeatedTask invoke remove_outdated_meta method (#1578)

* feat: make RepeatedTask invoke remove_outdated_meta method

* fix: typo

* chore: improve error message
This commit is contained in:
Niwaka
2023-05-16 11:21:35 +09:00
committed by GitHub
parent 122bd5f0ab
commit 856ab5bea7
6 changed files with 153 additions and 10 deletions

View File

@@ -482,6 +482,16 @@ pub enum Error {
#[snafu(display("Payload not exist"))]
PayloadNotExist { location: Location },
#[snafu(display("Failed to start the procedure manager"))]
StartProcedureManager {
source: common_procedure::error::Error,
},
#[snafu(display("Failed to stop the procedure manager"))]
StopProcedureManager {
source: common_procedure::error::Error,
},
}
pub type Result<T> = std::result::Result<T, Error>;
@@ -581,6 +591,9 @@ impl ErrorExt for Error {
source.status_code()
}
WaitProcedure { source, .. } => source.status_code(),
StartProcedureManager { source } | StopProcedureManager { source } => {
source.status_code()
}
}
}

View File

@@ -62,6 +62,7 @@ use crate::datanode::{
use crate::error::{
self, CatalogSnafu, MetaClientInitSnafu, MissingMetasrvOptsSnafu, MissingNodeIdSnafu,
NewCatalogSnafu, OpenLogStoreSnafu, RecoverProcedureSnafu, Result, ShutdownInstanceSnafu,
StartProcedureManagerSnafu, StopProcedureManagerSnafu,
};
use crate::heartbeat::handler::parse_mailbox_message::ParseMailboxMessageHandler;
use crate::heartbeat::handler::HandlerGroupExecutor;
@@ -258,10 +259,17 @@ impl Instance {
.recover()
.await
.context(RecoverProcedureSnafu)?;
self.procedure_manager
.start()
.context(StartProcedureManagerSnafu)?;
Ok(())
}
pub async fn shutdown(&self) -> Result<()> {
self.procedure_manager
.stop()
.await
.context(StopProcedureManagerSnafu)?;
if let Some(heartbeat_task) = &self.heartbeat_task {
heartbeat_task
.close()
@@ -568,6 +576,7 @@ pub(crate) async fn create_procedure_manager(
let manager_config = ManagerConfig {
max_retry_times: procedure_config.max_retry_times,
retry_delay: procedure_config.retry_delay,
..Default::default()
};
Ok(Arc::new(LocalManager::new(manager_config, state_store)))