Skip to content

Commit 0858a11

Browse files
authored
fix: 修复Issue #617的问题 (#618)
1 parent 699de1f commit 0858a11

2 files changed

Lines changed: 24 additions & 24 deletions

File tree

volo/src/loadbalance/consistent_hash.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -262,19 +262,19 @@ where
262262
}
263263
let request_hash = request_hash.unwrap();
264264
let key = discover.key(endpoint);
265-
let weighted_list = match self.router.entry(key) {
266-
Entry::Occupied(e) => e.get().clone(),
267-
Entry::Vacant(e) => {
268-
let instances = Arc::new(
269-
self.build_weighted_instances(
270-
discover
271-
.discover(endpoint)
272-
.await
273-
.map_err(|err| err.into())?,
274-
),
275-
);
276-
e.insert(instances).value().clone()
277-
}
265+
let weighted_list = if let Some(instances) = self.router.get(&key) {
266+
instances.clone()
267+
} else {
268+
let instances = Arc::new(
269+
self.build_weighted_instances(
270+
discover
271+
.discover(endpoint)
272+
.await
273+
.map_err(|err| err.into())?,
274+
),
275+
);
276+
self.router.insert(key, Arc::clone(&instances));
277+
instances
278278
};
279279
Ok(InstancePicker {
280280
shared_instances: weighted_list,

volo/src/loadbalance/random.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -141,17 +141,17 @@ where
141141
discover: &'future D,
142142
) -> Result<Self::InstanceIter, LoadBalanceError> {
143143
let key = discover.key(endpoint);
144-
let weighted_list = match self.router.entry(key) {
145-
Entry::Occupied(e) => e.get().clone(),
146-
Entry::Vacant(e) => {
147-
let instances = Arc::new(WeightedInstances::from(
148-
discover
149-
.discover(endpoint)
150-
.await
151-
.map_err(|err| err.into())?,
152-
));
153-
e.insert(instances).value().clone()
154-
}
144+
let weighted_list = if let Some(instances) = self.router.get(&key) {
145+
instances.clone()
146+
} else {
147+
let instances = Arc::new(WeightedInstances::from(
148+
discover
149+
.discover(endpoint)
150+
.await
151+
.map_err(|err| err.into())?,
152+
));
153+
self.router.insert(key, Arc::clone(&instances));
154+
instances
155155
};
156156
let sum_of_weights = weighted_list.sum_of_weights;
157157
Ok(InstancePicker {

0 commit comments

Comments
 (0)