Skip to content

Commit 79b1798

Browse files
committed
upgrade version to v0.8.3
1 parent ed2401b commit 79b1798

3 files changed

Lines changed: 39 additions & 10 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rnacos"
3-
version = "0.8.2"
3+
version = "0.8.3"
44
authors = ["heqingpan <heqingpan@126.com>"]
55
edition = "2018"
66
license = "Apache-2.0"

src/naming/instance_meta_manager.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,14 +190,12 @@ impl InstanceMetaManager {
190190
}
191191

192192
fn update_delay_meta(&mut self) {
193-
let current_repo = self.current_repo();
194-
for (service_key, records) in &self.cache_meta {
195-
current_repo.do_send(InstanceMetaRepositoryReq::UpdateMetadata(
196-
service_key.clone(),
197-
records.clone(),
198-
));
193+
if self.cache_meta.is_empty() {
194+
return;
199195
}
200-
self.cache_meta.clear();
196+
let current_repo = self.current_repo();
197+
let records_map = std::mem::take(&mut self.cache_meta);
198+
current_repo.do_send(InstanceMetaRepositoryReq::UpdateBatch(records_map));
201199
}
202200
}
203201

src/naming/instance_meta_repository.rs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,27 @@ impl InstanceMetaRepository {
280280
Ok(())
281281
}
282282

283+
pub async fn batch_update_metadata(
284+
&mut self,
285+
records_map: HashMap<ServiceKey, Vec<InstanceMetaDto>>,
286+
) -> anyhow::Result<()> {
287+
let mut file_map_changed = false;
288+
for (service_key, records) in records_map {
289+
if let Some(file_name) = self.file_map.get(&service_key) {
290+
self.write_records_to_file(file_name, &records).await?;
291+
} else {
292+
let file_name = Uuid::new_v4().simple().to_string();
293+
self.write_records_to_file(&file_name, &records).await?;
294+
self.file_map.insert(service_key, file_name);
295+
file_map_changed = true;
296+
}
297+
}
298+
if file_map_changed {
299+
self.save_file_map().await?;
300+
}
301+
Ok(())
302+
}
303+
283304
pub async fn remove_metadata(&mut self, service_keys: &[ServiceKey]) -> anyhow::Result<()> {
284305
for service_key in service_keys {
285306
if let Some(file_name) = self.file_map.remove(service_key) {
@@ -303,7 +324,10 @@ impl InstanceMetaRepository {
303324
) -> anyhow::Result<Vec<InstanceMetaDto>> {
304325
match self.file_map.get(service_key) {
305326
Some(file_name) => {
306-
let records = self.read_records_from_file(file_name).await?;
327+
let records = self
328+
.read_records_from_file(file_name)
329+
.await
330+
.unwrap_or_default();
307331
Ok(records.into_iter().map(|r| r.into()).collect())
308332
}
309333
None => Ok(Vec::new()),
@@ -315,7 +339,10 @@ impl InstanceMetaRepository {
315339
) -> anyhow::Result<Vec<(ServiceKey, Vec<InstanceMetaDto>)>> {
316340
let mut result = Vec::new();
317341
for (service_key, file_name) in &self.file_map {
318-
let records = self.read_records_from_file(file_name).await?;
342+
let records = self
343+
.read_records_from_file(file_name)
344+
.await
345+
.unwrap_or_default();
319346
let metas = records.into_iter().map(|r| r.into()).collect();
320347
result.push((service_key.clone(), metas))
321348
}
@@ -363,6 +390,9 @@ impl InstanceMetaRepository {
363390
InstanceMetaRepositoryReq::UpdateMetadata(service_key, metas) => {
364391
self.update_metadata(&service_key, metas).await?
365392
}
393+
InstanceMetaRepositoryReq::UpdateBatch(records_map) => {
394+
self.batch_update_metadata(records_map).await?
395+
}
366396
InstanceMetaRepositoryReq::RemoveMetadata(keys) => self.remove_metadata(&keys).await?,
367397
InstanceMetaRepositoryReq::GetServiceList => {
368398
let keys = self.list_services();
@@ -401,6 +431,7 @@ impl Actor for InstanceMetaRepository {
401431
#[rtype(result = "anyhow::Result<InstanceMetaRepositoryResult>")]
402432
pub enum InstanceMetaRepositoryReq {
403433
UpdateMetadata(ServiceKey, Vec<InstanceMetaDto>),
434+
UpdateBatch(HashMap<ServiceKey, Vec<InstanceMetaDto>>),
404435
RemoveMetadata(Vec<ServiceKey>),
405436
Clear,
406437
GetServiceList,

0 commit comments

Comments
 (0)