Skip to content

Commit 5fe81c1

Browse files
committed
feat(sequence): 添加序列相关接口并更新 AppShareData 结构
- 在 AppShareData 结构中添加 SequenceDbManager 和 SequenceManager - 新增序列调试接口 /rnacos/debug/sequence/next_id - 实现获取下一个序列 ID 的功能 - 优化命名服务日志输出
1 parent a772364 commit 5fe81c1

File tree

5 files changed

+58
-6
lines changed

5 files changed

+58
-6
lines changed

src/common/appdata.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ use crate::raft::db::table::TableManager;
1616
use crate::raft::filestore::core::FileStore;
1717
use crate::raft::network::factory::RaftClusterRequestSender;
1818
use crate::raft::NacosRaft;
19+
use crate::sequence::core::SequenceDbManager;
20+
use crate::sequence::SequenceManager;
1921
use crate::transfer::reader::TransferImportManager;
2022
use crate::transfer::writer::TransferWriterManager;
2123
use crate::user::UserManager;
@@ -50,4 +52,6 @@ pub struct AppShareData {
5052
pub transfer_import_manager: Addr<TransferImportManager>,
5153
pub health_manager: Addr<HealthManager>,
5254
pub ldap_manager: Addr<LdapManager>,
55+
pub sequence_db_manager: Addr<SequenceDbManager>,
56+
pub sequence_manager: Addr<SequenceManager>,
5357
}

src/naming/core.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,8 +1110,8 @@ impl Handler<NamingCmd> for NamingActor {
11101110
type Result = anyhow::Result<NamingResult>;
11111111

11121112
fn handle(&mut self, msg: NamingCmd, ctx: &mut Context<Self>) -> Self::Result {
1113-
#[cfg(feature = "debug")]
1114-
log::info!("NamingActor handle:{:?}", &msg);
1113+
//#[cfg(feature = "debug")]
1114+
//log::info!("NamingActor handle:{:?}", &msg);
11151115
match msg {
11161116
NamingCmd::Update(instance, tag) => {
11171117
let tag = self.update_instance(&instance.get_service_key(), instance, tag, false);

src/openapi/debug/mod.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
use actix_web::web;
22

33
pub(crate) mod naming_api;
4+
pub(crate) mod sequence_api;
45

56
pub fn debug_config(config: &mut web::ServiceConfig) {
6-
config.service(
7-
web::resource("/rnacos/debug/naming/common")
8-
.route(web::get().to(naming_api::naming_debug_req)),
9-
);
7+
config
8+
.service(
9+
web::resource("/rnacos/debug/naming/common")
10+
.route(web::get().to(naming_api::naming_debug_req)),
11+
)
12+
.service(
13+
web::resource("/rnacos/debug/sequence/next_id")
14+
.route(web::get().to(sequence_api::next_id)),
15+
);
1016
}

src/openapi/debug/sequence_api.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
use crate::common::appdata::AppShareData;
2+
use crate::common::model::ApiResult;
3+
use crate::sequence::{SequenceRequest, SequenceResult};
4+
use actix_web::{web, HttpResponse, Responder};
5+
use serde::{Deserialize, Serialize};
6+
use std::sync::Arc;
7+
8+
#[derive(Debug, Deserialize, Serialize)]
9+
pub struct SequenceParam {
10+
pub key: String,
11+
}
12+
13+
async fn get_next_id(share_data: &Arc<AppShareData>, key: String) -> anyhow::Result<u64> {
14+
let result = share_data
15+
.sequence_manager
16+
.send(SequenceRequest::GetNextId(Arc::new(format!("o_{}", &key))))
17+
.await??;
18+
match result {
19+
SequenceResult::NextId(id) => Ok(id),
20+
_ => Err(anyhow::anyhow!("get next id error,key:{}", &key)),
21+
}
22+
}
23+
24+
pub async fn next_id(
25+
app_share_data: web::Data<Arc<AppShareData>>,
26+
web::Query(param): web::Query<SequenceParam>,
27+
) -> impl Responder {
28+
match get_next_id(&app_share_data, param.key).await {
29+
Ok(id) => HttpResponse::Ok().json(ApiResult::success(Some(id))),
30+
Err(e) => HttpResponse::Ok().json(ApiResult::<()>::error(
31+
"SEQUENCE_ERROR".to_string(),
32+
Some(e.to_string()),
33+
)),
34+
}
35+
}

src/starter.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use crate::raft::filestore::raftindex::RaftIndexManager;
1414
use crate::raft::filestore::raftlog::RaftLogManager;
1515
use crate::raft::filestore::raftsnapshot::RaftSnapshotManager;
1616
use crate::sequence::core::SequenceDbManager;
17+
use crate::sequence::SequenceManager;
1718
use crate::transfer::reader::TransferImportManager;
1819
use crate::transfer::writer::TransferWriterManager;
1920
use crate::{
@@ -186,6 +187,10 @@ pub async fn config_factory(sys_config: Arc<AppSysConfig>) -> anyhow::Result<Fac
186187
factory.register(BeanDefinition::from_obj(raft_request_route));
187188
let sequence_db_addr = SequenceDbManager::new().start();
188189
factory.register(BeanDefinition::actor_from_obj(sequence_db_addr.clone()));
190+
factory.register(BeanDefinition::actor_with_inject_from_obj(
191+
SequenceManager::new().start(),
192+
));
193+
factory.register(BeanDefinition::actor_from_obj(sequence_db_addr.clone()));
189194

190195
let raft_data_wrap = Arc::new(RaftDataHandler {
191196
sequence_db: sequence_db_addr,
@@ -242,6 +247,8 @@ pub fn build_share_data(factory_data: FactoryData) -> anyhow::Result<Arc<AppShar
242247
transfer_import_manager: factory_data.get_actor().unwrap(),
243248
health_manager: factory_data.get_actor().unwrap(),
244249
ldap_manager: factory_data.get_actor().unwrap(),
250+
sequence_manager: factory_data.get_actor().unwrap(),
251+
sequence_db_manager: factory_data.get_actor().unwrap(),
245252
factory_data,
246253
});
247254
Ok(app_data)

0 commit comments

Comments
 (0)