From 1130f69a82fbb2f099787e0db7523b42e7fad357 Mon Sep 17 00:00:00 2001 From: lbl8603 <49143209+lbl8603@users.noreply.github.com> Date: Wed, 1 May 2024 14:50:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4rt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnt/src/channel/context.rs | 11 ++++++++++- vnt/src/channel/mod.rs | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/vnt/src/channel/context.rs b/vnt/src/channel/context.rs index d130c9b..200747a 100644 --- a/vnt/src/channel/context.rs +++ b/vnt/src/channel/context.rs @@ -324,7 +324,16 @@ impl RouteTable { } else { let len = v.len(); if len != 0 { - return Ok(v[index % len].0); + let route = &v[index % len].0; + // 跳过默认rt的路由(一般是刚加入的),这有助于提升稳定性 + if route.rt != DEFAULT_RT { + return Ok(*route); + } + for (route, _) in v { + if route.rt != DEFAULT_RT { + return Ok(*route); + } + } } } } diff --git a/vnt/src/channel/mod.rs b/vnt/src/channel/mod.rs index 868bf63..2cb84af 100644 --- a/vnt/src/channel/mod.rs +++ b/vnt/src/channel/mod.rs @@ -68,7 +68,7 @@ pub struct RouteSortKey { pub metric: u8, pub rt: i64, } -const DEFAULT_RT: i64 = 999; +const DEFAULT_RT: i64 = 9999; impl Route { pub fn new(is_tcp: bool, index: usize, addr: SocketAddr, metric: u8, rt: i64) -> Self { Self {