v0.34.0_2
This commit is contained in:
1 parent
0a8bc6f040
commit
434e789144
38 files changed
+899
-238
No files matched your search
@@ -296,7 +296,7 @@ impl Pool {
|
||||
text
|
||||
}
|
||||
}
|
||||
async fn probe(member: Arc<Member>, settings: HealthCheck) {
|
||||
async fn probe(member: Arc<Member>, settings: Arc<HealthCheck>) {
|
||||
let start = Instant::now();
|
||||
let result = tokio::time::timeout(Duration::from_millis(settings.timeout_ms), async {
|
||||
match settings.mode {
|
||||
@@ -388,8 +388,12 @@ pub async fn health_loop(app: Weak<crate::runtime::App>, shutdown: CancellationT
|
||||
let snapshot = app.config.load_full();
|
||||
// Own an Arc for each candidate. JoinSet tasks require an
|
||||
// owned, 'static member rather than a reference into snapshot.
|
||||
// Health settings were already compiled into each member.
|
||||
// Reuse the immutable Arc instead of cloning each HealthCheck
|
||||
// and recalculating per-member overrides on every 250ms tick.
|
||||
let members: Vec<_> = snapshot.pools.iter().flat_map(|pool|
|
||||
pool.members.iter().map(move |member| (Arc::clone(member), pool.settings.health_for(&member.definition)))).collect();
|
||||
pool.members.iter().map(|member|
|
||||
(Arc::clone(member), Arc::clone(&member.health_settings)))).collect();
|
||||
for (member, _) in &members {
|
||||
member.state.sample_traffic();
|
||||
// Time-based pool recycling must not depend on receiving a
|
||||
|
||||
Reference in new issue
Block a user