Skip to content

Commit 3c76ac2

Browse files
committed
refactor(meta-service): remove redundant ActionHandler; move logic into MetaServiceImpl
1 parent 5013671 commit 3c76ac2

File tree

4 files changed

+51
-103
lines changed

4 files changed

+51
-103
lines changed

src/meta/service/src/api/grpc/grpc_service.rs

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use common_arrow::arrow_format::flight::data::BasicAuth;
2121
use common_base::base::tokio::sync::mpsc;
2222
use common_grpc::GrpcClaim;
2323
use common_grpc::GrpcToken;
24+
use common_meta_api::KVApi;
2425
use common_meta_client::MetaGrpcReadReq;
2526
use common_meta_client::MetaGrpcReq;
2627
use common_meta_client::MetaGrpcWriteReq;
@@ -49,11 +50,11 @@ use tonic::Status;
4950
use tonic::Streaming;
5051
use tracing::info;
5152

52-
use crate::executor::ActionHandler;
5353
use crate::meta_service::meta_service_impl::GrpcStream;
5454
use crate::meta_service::MetaNode;
5555
use crate::metrics::add_meta_metrics_meta_request_inflights;
5656
use crate::metrics::incr_meta_metrics_meta_recv_bytes;
57+
use crate::metrics::incr_meta_metrics_meta_request_result;
5758
use crate::metrics::incr_meta_metrics_meta_sent_bytes;
5859
use crate::version::from_digit_ver;
5960
use crate::version::to_digit_ver;
@@ -62,14 +63,14 @@ use crate::version::MIN_METACLI_SEMVER;
6263

6364
pub struct MetaServiceImpl {
6465
token: GrpcToken,
65-
action_handler: ActionHandler,
66+
pub(crate) meta_node: Arc<MetaNode>,
6667
}
6768

6869
impl MetaServiceImpl {
6970
pub fn create(meta_node: Arc<MetaNode>) -> Self {
7071
Self {
7172
token: GrpcToken::create(),
72-
action_handler: ActionHandler::create(meta_node),
73+
meta_node,
7374
}
7475
}
7576

@@ -85,6 +86,47 @@ impl MetaServiceImpl {
8586
})?;
8687
Ok(claim)
8788
}
89+
90+
pub async fn execute_kv_req(&self, req: MetaGrpcReq) -> RaftReply {
91+
// To keep the code IDE-friendly, we manually expand the enum variants and dispatch them one by one
92+
93+
match req {
94+
MetaGrpcReq::UpsertKV(a) => {
95+
let res = self.meta_node.upsert_kv(a).await;
96+
incr_meta_metrics_meta_request_result(res.is_ok());
97+
RaftReply::from(res)
98+
}
99+
MetaGrpcReq::GetKV(a) => {
100+
let res = self.meta_node.get_kv(&a.key).await;
101+
incr_meta_metrics_meta_request_result(res.is_ok());
102+
RaftReply::from(res)
103+
}
104+
MetaGrpcReq::MGetKV(a) => {
105+
let res = self.meta_node.mget_kv(&a.keys).await;
106+
incr_meta_metrics_meta_request_result(res.is_ok());
107+
RaftReply::from(res)
108+
}
109+
MetaGrpcReq::ListKV(a) => {
110+
let res = self.meta_node.prefix_list_kv(&a.prefix).await;
111+
incr_meta_metrics_meta_request_result(res.is_ok());
112+
RaftReply::from(res)
113+
}
114+
}
115+
}
116+
117+
pub async fn execute_txn(&self, req: TxnRequest) -> TxnReply {
118+
let ret = self.meta_node.transaction(req).await;
119+
incr_meta_metrics_meta_request_result(ret.is_ok());
120+
121+
match ret {
122+
Ok(resp) => resp,
123+
Err(err) => TxnReply {
124+
success: false,
125+
error: serde_json::to_string(&err).expect("fail to serialize"),
126+
responses: vec![],
127+
},
128+
}
129+
}
88130
}
89131

90132
#[async_trait::async_trait]
@@ -162,7 +204,7 @@ impl MetaService for MetaServiceImpl {
162204

163205
info!("Receive write_action: {:?}", req);
164206

165-
let body = self.action_handler.execute_kv_req(req).await;
207+
let body = self.execute_kv_req(req).await;
166208

167209
add_meta_metrics_meta_request_inflights(-1);
168210

@@ -184,7 +226,7 @@ impl MetaService for MetaServiceImpl {
184226

185227
info!("Receive read_action: {:?}", req);
186228

187-
let res = self.action_handler.execute_kv_req(req).await;
229+
let res = self.execute_kv_req(req).await;
188230

189231
add_meta_metrics_meta_request_inflights(-1);
190232

@@ -204,7 +246,7 @@ impl MetaService for MetaServiceImpl {
204246
&self,
205247
_request: Request<common_meta_types::protobuf::Empty>,
206248
) -> Result<Response<Self::ExportStream>, Status> {
207-
let meta_node = &self.action_handler.meta_node;
249+
let meta_node = &self.meta_node;
208250

209251
let res = meta_node.sto.export().await?;
210252

@@ -225,7 +267,7 @@ impl MetaService for MetaServiceImpl {
225267
) -> Result<Response<Self::WatchStream>, Status> {
226268
let (tx, rx) = mpsc::channel(4);
227269

228-
let meta_node = &self.action_handler.meta_node;
270+
let meta_node = &self.meta_node;
229271
meta_node.create_watcher_stream(request.into_inner(), tx);
230272

231273
let output_stream = tokio_stream::wrappers::ReceiverStream::new(rx);
@@ -246,7 +288,7 @@ impl MetaService for MetaServiceImpl {
246288

247289
info!("Receive txn_request: {:?}", request);
248290

249-
let body = self.action_handler.execute_txn(request).await;
291+
let body = self.execute_txn(request).await;
250292
add_meta_metrics_meta_request_inflights(-1);
251293

252294
incr_meta_metrics_meta_sent_bytes(body.encoded_len() as u64);
@@ -259,7 +301,7 @@ impl MetaService for MetaServiceImpl {
259301
request: Request<MemberListRequest>,
260302
) -> Result<Response<MemberListReply>, Status> {
261303
self.check_token(request.metadata())?;
262-
let meta_node = &self.action_handler.meta_node;
304+
let meta_node = &self.meta_node;
263305
let members = meta_node.get_meta_addrs().await.map_err(|e| {
264306
Status::internal(format!("Cannot get metasrv member list, error: {:?}", e))
265307
})?;

src/meta/service/src/executor/action_handler.rs

Lines changed: 0 additions & 76 deletions
This file was deleted.

src/meta/service/src/executor/mod.rs

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/meta/service/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
pub mod api;
1818
pub mod configs;
19-
pub mod executor;
2019
pub mod export;
2120
pub mod meta_service;
2221
pub mod metrics;

0 commit comments

Comments
 (0)