mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-25 01:10:37 +00:00
feat: disable_region_failover option for metasrv (#1777)
This commit is contained in:
@@ -93,6 +93,8 @@ struct StartCommand {
|
||||
#[clap(long)]
|
||||
use_memory_store: bool,
|
||||
#[clap(long)]
|
||||
disable_region_failover: bool,
|
||||
#[clap(long)]
|
||||
http_addr: Option<String>,
|
||||
#[clap(long)]
|
||||
http_timeout: Option<u64>,
|
||||
@@ -134,9 +136,9 @@ impl StartCommand {
|
||||
.context(error::UnsupportedSelectorTypeSnafu { selector_type })?;
|
||||
}
|
||||
|
||||
if self.use_memory_store {
|
||||
opts.use_memory_store = true;
|
||||
}
|
||||
opts.use_memory_store = self.use_memory_store;
|
||||
|
||||
opts.disable_region_failover = self.disable_region_failover;
|
||||
|
||||
if let Some(http_addr) = &self.http_addr {
|
||||
opts.http_opts.addr = http_addr.clone();
|
||||
|
||||
@@ -20,6 +20,7 @@ use crate::error::Result;
|
||||
use crate::handler::{HeartbeatAccumulator, HeartbeatHandler};
|
||||
use crate::metasrv::Context;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct CollectStatsHandler;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
|
||||
@@ -49,6 +49,7 @@ pub struct MetaSrvOptions {
|
||||
pub datanode_lease_secs: i64,
|
||||
pub selector: SelectorType,
|
||||
pub use_memory_store: bool,
|
||||
pub disable_region_failover: bool,
|
||||
pub http_opts: HttpOptions,
|
||||
pub logging: LoggingOptions,
|
||||
}
|
||||
@@ -62,6 +63,7 @@ impl Default for MetaSrvOptions {
|
||||
datanode_lease_secs: 15,
|
||||
selector: SelectorType::default(),
|
||||
use_memory_store: false,
|
||||
disable_region_failover: false,
|
||||
http_opts: HttpOptions::default(),
|
||||
logging: LoggingOptions::default(),
|
||||
}
|
||||
|
||||
@@ -146,24 +146,29 @@ impl MetaSrvBuilder {
|
||||
let handler_group = match handler_group {
|
||||
Some(handler_group) => handler_group,
|
||||
None => {
|
||||
let region_failover_manager = Arc::new(RegionFailoverManager::new(
|
||||
mailbox.clone(),
|
||||
procedure_manager.clone(),
|
||||
selector.clone(),
|
||||
SelectorContext {
|
||||
server_addr: options.server_addr.clone(),
|
||||
datanode_lease_secs: options.datanode_lease_secs,
|
||||
kv_store: kv_store.clone(),
|
||||
catalog: None,
|
||||
schema: None,
|
||||
table: None,
|
||||
},
|
||||
lock.clone(),
|
||||
));
|
||||
let region_failover_handler = if options.disable_region_failover {
|
||||
None
|
||||
} else {
|
||||
let region_failover_manager = Arc::new(RegionFailoverManager::new(
|
||||
mailbox.clone(),
|
||||
procedure_manager.clone(),
|
||||
selector.clone(),
|
||||
SelectorContext {
|
||||
server_addr: options.server_addr.clone(),
|
||||
datanode_lease_secs: options.datanode_lease_secs,
|
||||
kv_store: kv_store.clone(),
|
||||
catalog: None,
|
||||
schema: None,
|
||||
table: None,
|
||||
},
|
||||
lock.clone(),
|
||||
));
|
||||
|
||||
let region_failure_handler =
|
||||
RegionFailureHandler::try_new(election.clone(), region_failover_manager)
|
||||
.await?;
|
||||
Some(
|
||||
RegionFailureHandler::try_new(election.clone(), region_failover_manager)
|
||||
.await?,
|
||||
)
|
||||
};
|
||||
|
||||
let group = HeartbeatHandlerGroup::new(pushers);
|
||||
let keep_lease_handler = KeepLeaseHandler::new(kv_store.clone());
|
||||
@@ -174,9 +179,11 @@ impl MetaSrvBuilder {
|
||||
group.add_handler(keep_lease_handler).await;
|
||||
group.add_handler(CheckLeaderHandler::default()).await;
|
||||
group.add_handler(OnLeaderStartHandler::default()).await;
|
||||
group.add_handler(CollectStatsHandler).await;
|
||||
group.add_handler(MailboxHandler).await;
|
||||
group.add_handler(region_failure_handler).await;
|
||||
group.add_handler(CollectStatsHandler::default()).await;
|
||||
group.add_handler(MailboxHandler::default()).await;
|
||||
if let Some(region_failover_handler) = region_failover_handler {
|
||||
group.add_handler(region_failover_handler).await;
|
||||
}
|
||||
group.add_handler(PersistStatsHandler::default()).await;
|
||||
group
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user