1 Commits
Author SHA1 Message Date
renovate Bot 8822adc400 chore(deps): update rust crate tokio to v1.53.3
Build binaries / Build (arm-musleabi) (push) Successful in 1m55s
Build binaries / Build (aarch64-musl) (push) Successful in 1m59s
Build binaries / Build (aarch64-musl) (pull_request) Successful in 1m57s
Rust CI / cargo fmt (pull_request) Successful in 13s
Rust CI / cargo clippy (pull_request) Failing after 27s
Rust CI / cargo check (x86_64-unknown-linux-gnu) (pull_request) Failing after 25s
Rust CI / cargo check (x86_64-unknown-linux-musl) (pull_request) Failing after 9s
Rust CI / cargo test (x86_64-unknown-linux-gnu) (pull_request) Failing after 28s
Rust CI / cargo test (x86_64-unknown-linux-musl) (pull_request) Failing after 8s
Supply chain / cargo-deny advisories (pull_request) Failing after 2s
Supply chain / cargo-deny bans licenses sources (pull_request) Failing after 2s
Supply chain / actionlint (pull_request) Failing after 3s
Rust CI / cargo doc (pull_request) Failing after 24s
Build binaries / Build (arm-musleabi) (pull_request) Successful in 1m48s
Build binaries / Build (arm-musleabihf) (push) Successful in 1m50s
Build binaries / Build (armv7-musleabi) (push) Successful in 1m41s
Build binaries / Build (arm-musleabihf) (pull_request) Successful in 1m43s
Build binaries / Build (armv7-musleabi) (pull_request) Successful in 1m42s
Build binaries / Build (armv7-musleabihf) (push) Successful in 1m40s
Build binaries / Build (i686-musl) (push) Successful in 1m46s
Build binaries / Build (armv7-musleabihf) (pull_request) Successful in 1m42s
Build binaries / Build (i686-musl) (pull_request) Successful in 1m41s
Build binaries / Build (mips-musl) (push) Successful in 2m12s
Build binaries / Build (mips-musl) (pull_request) Successful in 2m7s
Build binaries / Build (mips64-muslabi64) (push) Successful in 2m12s
Build binaries / Build (mips64-muslabi64) (pull_request) Successful in 2m2s
Build binaries / Build (mips64el-muslabi64) (pull_request) Successful in 2m6s
Build binaries / Build (mips64el-muslabi64) (push) Successful in 2m7s
Build binaries / Build (mipsel-musl) (push) Successful in 2m6s
Build binaries / Build (riscv64gc-musl) (push) Successful in 1m47s
Build binaries / Build (mipsel-musl) (pull_request) Successful in 2m6s
Build binaries / Build (riscv64gc-musl) (pull_request) Successful in 1m36s
Build binaries / Build (x86_64-musl) (push) Successful in 1m36s
Build binaries / Build (x86_64-musl) (pull_request) Successful in 1m25s
2026-10-13 21:07:59 +00:00
4 changed files with 23 additions and 18 deletions

No files matched your search

+3 -9
View File
@@ -491,18 +491,12 @@ impl<S: InterfaceStatsProvider, T: TrafficControlBackend> Ratecontroller<S, T> {
self.state_dl.deltas = down_deltas;
self.state_ul.deltas = up_deltas;
let minimum =
usize::from(self.settings.advanced_settings.num_reflectors).min(reflectors.len());
if reflectors.is_empty()
|| self.state_dl.deltas.len() < minimum
|| self.state_ul.deltas.len() < minimum
{
if self.state_dl.deltas.len() < 5 || self.state_ul.deltas.len() < 5 {
// trigger reselection
warn!(
"Not enough delta values (D: {}, U: {}, need {}), triggering reselection",
"Not enough delta values (D: {}, U: {}, need 5), triggering reselection",
self.state_dl.deltas.len(),
self.state_ul.deltas.len(),
minimum
self.state_ul.deltas.len()
);
let _ = self.reselect_trigger.try_send(true);
}
-8
View File
@@ -167,7 +167,6 @@ impl ReflectorSelector {
let mut next_peers: Vec<IpAddr> = Vec::new();
let mut reflectors_peers = self.reflector_peers_lock.write_anyhow()?;
let current_peers = reflectors_peers.clone();
// Include all current peers
for reflector in reflectors_peers.iter() {
@@ -237,13 +236,6 @@ impl ReflectorSelector {
candidates.swap(i, j);
}
if candidates.is_empty() {
info!("No usable reflectors, retaining current set");
self.reflector_tx.send(current_peers.clone())?;
*reflectors_peers = current_peers;
continue;
}
if (candidates.len() as u8) < num_reflectors {
num_reflectors = candidates.len() as u8;
}
+9
View File
@@ -14,11 +14,16 @@ pub trait Clock {
}
pub enum Realtime {}
pub enum Monotonic {}
impl Clock for Realtime {
const ID: ClockId = ClockId::Realtime;
}
impl Clock for Monotonic {
const ID: ClockId = ClockId::Monotonic;
}
pub struct ClockSample<C> {
time_s: u64,
time_ns: u64,
@@ -51,6 +56,10 @@ impl<C: Clock> ClockSample<C> {
pub fn as_secs_f64(&self) -> f64 {
self.time_s as f64 + self.time_ns as f64 / 1_000_000_000.0
}
pub fn to_milliseconds(&self) -> u64 {
(self.time_s * 1000) + (self.time_ns / 1000000)
}
}
impl ClockSample<Realtime> {
+11 -1
View File
@@ -3,10 +3,20 @@
// SPDX-License-Identifier: MPL-2.0
use anyhow::anyhow;
use std::sync::{Arc, RwLock, RwLockReadGuard, RwLockWriteGuard};
use std::sync::{Arc, Mutex, MutexGuard, RwLock, RwLockReadGuard, RwLockWriteGuard};
pub type ArcRwLock<T> = Arc<RwLock<T>>;
pub trait MutexExt<T> {
fn lock_anyhow(&self) -> anyhow::Result<MutexGuard<'_, T>>;
}
impl<T> MutexExt<T> for Mutex<T> {
fn lock_anyhow(&self) -> anyhow::Result<MutexGuard<'_, T>> {
self.lock().map_err(|e| anyhow!("mutex poisoned: {e}"))
}
}
pub trait RwLockExt<T> {
fn read_anyhow(&self) -> anyhow::Result<RwLockReadGuard<'_, T>>;
fn write_anyhow(&self) -> anyhow::Result<RwLockWriteGuard<'_, T>>;