refactor: let metasrv returns ref always (#1954)

This commit is contained in:
JeremyHi
2023-07-13 17:06:51 +08:00
committed by GitHub
parent 132668bcd1
commit e4fd5d0fd3
7 changed files with 44 additions and 55 deletions

View File

@@ -238,57 +238,46 @@ impl MetaSrv {
&self.options &self.options
} }
#[inline] pub fn in_memory(&self) -> &ResettableKvStoreRef {
pub fn in_memory(&self) -> ResettableKvStoreRef { &self.in_memory
self.in_memory.clone()
} }
#[inline] pub fn kv_store(&self) -> &KvStoreRef {
pub fn kv_store(&self) -> KvStoreRef { &self.kv_store
self.kv_store.clone()
} }
#[inline] pub fn leader_cached_kv_store(&self) -> &ResettableKvStoreRef {
pub fn leader_cached_kv_store(&self) -> ResettableKvStoreRef { &self.leader_cached_kv_store
self.leader_cached_kv_store.clone()
} }
#[inline] pub fn meta_peer_client(&self) -> &MetaPeerClientRef {
pub fn meta_peer_client(&self) -> MetaPeerClientRef { &self.meta_peer_client
self.meta_peer_client.clone()
} }
#[inline] pub fn table_id_sequence(&self) -> &SequenceRef {
pub fn table_id_sequence(&self) -> SequenceRef { &self.table_id_sequence
self.table_id_sequence.clone()
} }
#[inline] pub fn selector(&self) -> &SelectorRef {
pub fn selector(&self) -> SelectorRef { &self.selector
self.selector.clone()
} }
#[inline] pub fn handler_group(&self) -> &HeartbeatHandlerGroup {
pub fn handler_group(&self) -> HeartbeatHandlerGroup { &self.handler_group
self.handler_group.clone()
} }
#[inline] pub fn election(&self) -> Option<&ElectionRef> {
pub fn election(&self) -> Option<ElectionRef> { self.election.as_ref()
self.election.clone()
} }
#[inline]
pub fn lock(&self) -> &DistLockRef { pub fn lock(&self) -> &DistLockRef {
&self.lock &self.lock
} }
#[inline] pub fn mailbox(&self) -> &MailboxRef {
pub fn mailbox(&self) -> MailboxRef { &self.mailbox
self.mailbox.clone()
} }
#[inline]
pub fn ddl_manager(&self) -> &DdlManagerRef { pub fn ddl_manager(&self) -> &DdlManagerRef {
&self.ddl_manager &self.ddl_manager
} }
@@ -304,12 +293,12 @@ impl MetaSrv {
#[inline] #[inline]
pub fn new_ctx(&self) -> Context { pub fn new_ctx(&self) -> Context {
let server_addr = self.options().server_addr.clone(); let server_addr = self.options().server_addr.clone();
let in_memory = self.in_memory(); let in_memory = self.in_memory.clone();
let kv_store = self.kv_store(); let kv_store = self.kv_store.clone();
let leader_cached_kv_store = self.leader_cached_kv_store(); let leader_cached_kv_store = self.leader_cached_kv_store.clone();
let meta_peer_client = self.meta_peer_client(); let meta_peer_client = self.meta_peer_client.clone();
let mailbox = self.mailbox(); let mailbox = self.mailbox.clone();
let election = self.election(); let election = self.election.clone();
let skip_all = Arc::new(AtomicBool::new(false)); let skip_all = Arc::new(AtomicBool::new(false));
Context { Context {
server_addr, server_addr,

View File

@@ -36,35 +36,35 @@ pub fn make_admin_service(meta_srv: MetaSrv) -> Admin {
let router = router.route( let router = router.route(
"/node-lease", "/node-lease",
node_lease::NodeLeaseHandler { node_lease::NodeLeaseHandler {
meta_peer_client: meta_srv.meta_peer_client(), meta_peer_client: meta_srv.meta_peer_client().clone(),
}, },
); );
let router = router.route( let router = router.route(
"/heartbeat", "/heartbeat",
heartbeat::HeartBeatHandler { heartbeat::HeartBeatHandler {
meta_peer_client: meta_srv.meta_peer_client(), meta_peer_client: meta_srv.meta_peer_client().clone(),
}, },
); );
let router = router.route( let router = router.route(
"/catalogs", "/catalogs",
meta::CatalogsHandler { meta::CatalogsHandler {
kv_store: meta_srv.kv_store(), kv_store: meta_srv.kv_store().clone(),
}, },
); );
let router = router.route( let router = router.route(
"/schemas", "/schemas",
meta::SchemasHandler { meta::SchemasHandler {
kv_store: meta_srv.kv_store(), kv_store: meta_srv.kv_store().clone(),
}, },
); );
let router = router.route( let router = router.route(
"/tables", "/tables",
meta::TablesHandler { meta::TablesHandler {
kv_store: meta_srv.kv_store(), kv_store: meta_srv.kv_store().clone(),
table_metadata_manager: meta_srv.table_metadata_manager().clone(), table_metadata_manager: meta_srv.table_metadata_manager().clone(),
}, },
); );
@@ -72,7 +72,7 @@ pub fn make_admin_service(meta_srv: MetaSrv) -> Admin {
let router = router.route( let router = router.route(
"/table", "/table",
meta::TableHandler { meta::TableHandler {
kv_store: meta_srv.kv_store(), kv_store: meta_srv.kv_store().clone(),
table_metadata_manager: meta_srv.table_metadata_manager().clone(), table_metadata_manager: meta_srv.table_metadata_manager().clone(),
}, },
); );
@@ -80,14 +80,14 @@ pub fn make_admin_service(meta_srv: MetaSrv) -> Admin {
let router = router.route( let router = router.route(
"/leader", "/leader",
leader::LeaderHandler { leader::LeaderHandler {
election: meta_srv.election(), election: meta_srv.election().cloned(),
}, },
); );
let router = router.route( let router = router.route(
"/route", "/route",
route::RouteHandler { route::RouteHandler {
kv_store: meta_srv.kv_store(), kv_store: meta_srv.kv_store().clone(),
}, },
); );

View File

@@ -53,8 +53,8 @@ impl ddl_task_server::DdlTask for MetaSrv {
let ctx = SelectorContext { let ctx = SelectorContext {
datanode_lease_secs: self.options().datanode_lease_secs, datanode_lease_secs: self.options().datanode_lease_secs,
server_addr: self.options().server_addr.clone(), server_addr: self.options().server_addr.clone(),
kv_store: self.kv_store(), kv_store: self.kv_store().clone(),
meta_peer_client: self.meta_peer_client(), meta_peer_client: self.meta_peer_client().clone(),
catalog: None, catalog: None,
schema: None, schema: None,
table: None, table: None,

View File

@@ -43,7 +43,7 @@ impl heartbeat_server::Heartbeat for MetaSrv {
) -> GrpcResult<Self::HeartbeatStream> { ) -> GrpcResult<Self::HeartbeatStream> {
let mut in_stream = req.into_inner(); let mut in_stream = req.into_inner();
let (tx, rx) = mpsc::channel(128); let (tx, rx) = mpsc::channel(128);
let handler_group = self.handler_group(); let handler_group = self.handler_group().clone();
let ctx = self.new_ctx(); let ctx = self.new_ctx();
let _handle = common_runtime::spawn_bg(async move { let _handle = common_runtime::spawn_bg(async move {
let mut pusher_key = None; let mut pusher_key = None;

View File

@@ -85,8 +85,8 @@ impl router_server::Router for MetaSrv {
let ctx = SelectorContext { let ctx = SelectorContext {
datanode_lease_secs: self.options().datanode_lease_secs, datanode_lease_secs: self.options().datanode_lease_secs,
server_addr: self.options().server_addr.clone(), server_addr: self.options().server_addr.clone(),
kv_store: self.kv_store(), kv_store: self.kv_store().clone(),
meta_peer_client: self.meta_peer_client(), meta_peer_client: self.meta_peer_client().clone(),
catalog: Some(table_name.catalog_name.clone()), catalog: Some(table_name.catalog_name.clone()),
schema: Some(table_name.schema_name.clone()), schema: Some(table_name.schema_name.clone()),
table: Some(table_name.table_name.clone()), table: Some(table_name.table_name.clone()),
@@ -140,8 +140,8 @@ impl router_server::Router for MetaSrv {
async fn handle_create( async fn handle_create(
req: CreateRequest, req: CreateRequest,
ctx: SelectorContext, ctx: SelectorContext,
selector: SelectorRef, selector: &SelectorRef,
table_id_sequence: SequenceRef, table_id_sequence: &SequenceRef,
) -> Result<RouteResponse> { ) -> Result<RouteResponse> {
let CreateRequest { let CreateRequest {
header, header,

View File

@@ -97,7 +97,7 @@ impl GreptimeDbClusterBuilder {
build_datanode_clients(datanode_clients.clone(), &datanode_instances, datanodes).await; build_datanode_clients(datanode_clients.clone(), &datanode_instances, datanodes).await;
self.wait_datanodes_alive(&meta_srv.meta_srv.meta_peer_client(), datanodes) self.wait_datanodes_alive(meta_srv.meta_srv.meta_peer_client(), datanodes)
.await; .await;
let frontend = self let frontend = self
@@ -131,7 +131,7 @@ impl GreptimeDbClusterBuilder {
let mock = let mock =
meta_srv::mocks::mock(opt, self.kv_store.clone(), None, Some(datanode_clients)).await; meta_srv::mocks::mock(opt, self.kv_store.clone(), None, Some(datanode_clients)).await;
let metadata_service = DefaultMetadataService::new(mock.meta_srv.kv_store()); let metadata_service = DefaultMetadataService::new(mock.meta_srv.kv_store().clone());
metadata_service metadata_service
.create_schema("another_catalog", "another_schema", true) .create_schema("another_catalog", "another_schema", true)
.await .await

View File

@@ -332,13 +332,13 @@ async fn run_region_failover_procedure(
let procedure = RegionFailoverProcedure::new( let procedure = RegionFailoverProcedure::new(
failed_region.clone(), failed_region.clone(),
RegionFailoverContext { RegionFailoverContext {
mailbox: meta_srv.mailbox(), mailbox: meta_srv.mailbox().clone(),
selector, selector,
selector_ctx: SelectorContext { selector_ctx: SelectorContext {
datanode_lease_secs: meta_srv.options().datanode_lease_secs, datanode_lease_secs: meta_srv.options().datanode_lease_secs,
server_addr: meta_srv.options().server_addr.clone(), server_addr: meta_srv.options().server_addr.clone(),
kv_store: meta_srv.kv_store(), kv_store: meta_srv.kv_store().clone(),
meta_peer_client: meta_srv.meta_peer_client(), meta_peer_client: meta_srv.meta_peer_client().clone(),
catalog: None, catalog: None,
schema: None, schema: None,
table: None, table: None,