Skip to content

Commit 164de92

Browse files
committed
refactor: [#1589] remvoe duplicate code
1 parent 1c13b12 commit 164de92

File tree

3 files changed

+17
-112
lines changed

3 files changed

+17
-112
lines changed

packages/udp-tracker-server/src/statistics/event/handler/response_sent.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub async fn handle_event(
2020
label_set.upsert(label_name!("request_kind"), LabelValue::new(&req_kind.to_string()));
2121

2222
let _new_avg = stats_repository
23-
.recalculate_udp_avg_connect_processing_time_ns(req_processing_time, &label_set, now)
23+
.recalculate_udp_avg_processing_time_ns(req_processing_time, &label_set, now)
2424
.await;
2525

2626
(LabelValue::new("ok"), UdpRequestKind::Connect.into())
@@ -30,7 +30,7 @@ pub async fn handle_event(
3030
label_set.upsert(label_name!("request_kind"), LabelValue::new(&req_kind.to_string()));
3131

3232
let _new_avg = stats_repository
33-
.recalculate_udp_avg_announce_processing_time_ns(req_processing_time, &label_set, now)
33+
.recalculate_udp_avg_processing_time_ns(req_processing_time, &label_set, now)
3434
.await;
3535

3636
(LabelValue::new("ok"), UdpRequestKind::Announce { announce_request }.into())
@@ -40,7 +40,7 @@ pub async fn handle_event(
4040
label_set.upsert(label_name!("request_kind"), LabelValue::new(&req_kind.to_string()));
4141

4242
let _new_avg = stats_repository
43-
.recalculate_udp_avg_scrape_processing_time_ns(req_processing_time, &label_set, now)
43+
.recalculate_udp_avg_processing_time_ns(req_processing_time, &label_set, now)
4444
.await;
4545

4646
(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Scrape.to_string()))

packages/udp-tracker-server/src/statistics/metrics.rs

Lines changed: 3 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ impl Metrics {
5151

5252
impl Metrics {
5353
#[allow(clippy::cast_precision_loss)]
54-
pub fn recalculate_udp_avg_connect_processing_time_ns(
54+
pub fn recalculate_udp_avg_processing_time_ns(
5555
&mut self,
5656
req_processing_time: Duration,
5757
label_set: &LabelSet,
@@ -71,73 +71,8 @@ impl Metrics {
7171
};
7272

7373
tracing::debug!(
74-
"Recalculated UDP average connect processing time: {} ns (previous: {} ns, req_processing_time: {} ns, udp_connections_handled: {})",
75-
new_avg,
76-
previous_avg,
77-
req_processing_time,
78-
request_accepted_total
79-
);
80-
81-
self.update_udp_avg_processing_time_ns(new_avg, label_set, now);
82-
83-
new_avg
84-
}
85-
86-
#[allow(clippy::cast_precision_loss)]
87-
pub fn recalculate_udp_avg_announce_processing_time_ns(
88-
&mut self,
89-
req_processing_time: Duration,
90-
label_set: &LabelSet,
91-
now: DurationSinceUnixEpoch,
92-
) -> f64 {
93-
let req_processing_time = req_processing_time.as_nanos() as f64;
94-
95-
let request_accepted_total = self.udp_request_accepted(label_set) as f64;
96-
97-
let previous_avg = self.udp_avg_processing_time_ns(label_set);
98-
99-
let new_avg = if request_accepted_total == 0.0 {
100-
req_processing_time
101-
} else {
102-
// Moving average: https://en.wikipedia.org/wiki/Moving_average
103-
previous_avg as f64 + (req_processing_time - previous_avg as f64) / request_accepted_total
104-
};
105-
106-
tracing::debug!(
107-
"Recalculated UDP average announce processing time: {} ns (previous: {} ns, req_processing_time: {} ns, udp_announces_handled: {})",
108-
new_avg,
109-
previous_avg,
110-
req_processing_time,
111-
request_accepted_total
112-
);
113-
114-
self.update_udp_avg_processing_time_ns(new_avg, label_set, now);
115-
116-
new_avg
117-
}
118-
119-
#[allow(clippy::cast_precision_loss)]
120-
pub fn recalculate_udp_avg_scrape_processing_time_ns(
121-
&mut self,
122-
req_processing_time: Duration,
123-
label_set: &LabelSet,
124-
now: DurationSinceUnixEpoch,
125-
) -> f64 {
126-
let req_processing_time = req_processing_time.as_nanos() as f64;
127-
128-
let request_accepted_total = self.udp_request_accepted(label_set) as f64;
129-
130-
let previous_avg = self.udp_avg_processing_time_ns(label_set);
131-
132-
let new_avg = if request_accepted_total == 0.0 {
133-
req_processing_time
134-
} else {
135-
// Moving average: https://en.wikipedia.org/wiki/Moving_average
136-
previous_avg as f64 + (req_processing_time - previous_avg as f64) / request_accepted_total
137-
};
138-
139-
tracing::debug!(
140-
"Recalculated UDP average scrape processing time: {} ns (previous: {} ns, req_processing_time: {} ns, udp_scrapes_handled: {})",
74+
"Recalculated UDP average processing time for labels {}: {} ns (previous: {} ns, req_processing_time: {} ns, request_accepted_total: {})",
75+
label_set,
14176
new_avg,
14277
previous_avg,
14378
req_processing_time,

packages/udp-tracker-server/src/statistics/repository.rs

Lines changed: 11 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -73,45 +73,15 @@ impl Repository {
7373
result
7474
}
7575

76-
pub async fn recalculate_udp_avg_connect_processing_time_ns(
76+
pub async fn recalculate_udp_avg_processing_time_ns(
7777
&self,
7878
req_processing_time: Duration,
7979
label_set: &LabelSet,
8080
now: DurationSinceUnixEpoch,
8181
) -> f64 {
8282
let mut stats_lock = self.stats.write().await;
8383

84-
let new_avg = stats_lock.recalculate_udp_avg_connect_processing_time_ns(req_processing_time, label_set, now);
85-
86-
drop(stats_lock);
87-
88-
new_avg
89-
}
90-
91-
pub async fn recalculate_udp_avg_announce_processing_time_ns(
92-
&self,
93-
req_processing_time: Duration,
94-
label_set: &LabelSet,
95-
now: DurationSinceUnixEpoch,
96-
) -> f64 {
97-
let mut stats_lock = self.stats.write().await;
98-
99-
let new_avg = stats_lock.recalculate_udp_avg_announce_processing_time_ns(req_processing_time, label_set, now);
100-
101-
drop(stats_lock);
102-
103-
new_avg
104-
}
105-
106-
pub async fn recalculate_udp_avg_scrape_processing_time_ns(
107-
&self,
108-
req_processing_time: Duration,
109-
label_set: &LabelSet,
110-
now: DurationSinceUnixEpoch,
111-
) -> f64 {
112-
let mut stats_lock = self.stats.write().await;
113-
114-
let new_avg = stats_lock.recalculate_udp_avg_scrape_processing_time_ns(req_processing_time, label_set, now);
84+
let new_avg = stats_lock.recalculate_udp_avg_processing_time_ns(req_processing_time, label_set, now);
11585

11686
drop(stats_lock);
11787

@@ -354,7 +324,7 @@ mod tests {
354324
// Calculate new average with processing time of 2000ns
355325
let processing_time = Duration::from_nanos(2000);
356326
let new_avg = repo
357-
.recalculate_udp_avg_connect_processing_time_ns(processing_time, &connect_labels, now)
327+
.recalculate_udp_avg_processing_time_ns(processing_time, &connect_labels, now)
358328
.await;
359329

360330
// Moving average: previous_avg + (new_value - previous_avg) / total_connections
@@ -401,7 +371,7 @@ mod tests {
401371
// Calculate new average with processing time of 1500ns
402372
let processing_time = Duration::from_nanos(1500);
403373
let new_avg = repo
404-
.recalculate_udp_avg_announce_processing_time_ns(processing_time, &announce_labels, now)
374+
.recalculate_udp_avg_processing_time_ns(processing_time, &announce_labels, now)
405375
.await;
406376

407377
// Moving average: previous_avg + (new_value - previous_avg) / total_announces
@@ -442,7 +412,7 @@ mod tests {
442412
// Calculate new average with processing time of 1200ns
443413
let processing_time = Duration::from_nanos(1200);
444414
let new_avg = repo
445-
.recalculate_udp_avg_scrape_processing_time_ns(processing_time, &scrape_labels, now)
415+
.recalculate_udp_avg_processing_time_ns(processing_time, &scrape_labels, now)
446416
.await;
447417

448418
// Moving average: previous_avg + (new_value - previous_avg) / total_scrapes
@@ -464,17 +434,17 @@ mod tests {
464434

465435
let connect_labels = LabelSet::from([("request_kind", "connect")]);
466436
let connect_avg = repo
467-
.recalculate_udp_avg_connect_processing_time_ns(processing_time, &connect_labels, now)
437+
.recalculate_udp_avg_processing_time_ns(processing_time, &connect_labels, now)
468438
.await;
469439

470440
let announce_labels = LabelSet::from([("request_kind", "announce")]);
471441
let announce_avg = repo
472-
.recalculate_udp_avg_announce_processing_time_ns(processing_time, &announce_labels, now)
442+
.recalculate_udp_avg_processing_time_ns(processing_time, &announce_labels, now)
473443
.await;
474444

475445
let scrape_labels = LabelSet::from([("request_kind", "scrape")]);
476446
let scrape_avg = repo
477-
.recalculate_udp_avg_scrape_processing_time_ns(processing_time, &scrape_labels, now)
447+
.recalculate_udp_avg_processing_time_ns(processing_time, &scrape_labels, now)
478448
.await;
479449

480450
// With 0 total connections, the formula becomes 0 + (1000 - 0) / 0
@@ -535,7 +505,7 @@ mod tests {
535505
let large_duration = Duration::from_secs(1); // 1 second = 1,000,000,000 ns
536506
let connect_labels = LabelSet::from([("request_kind", "connect")]);
537507
let new_avg = repo
538-
.recalculate_udp_avg_connect_processing_time_ns(large_duration, &connect_labels, now)
508+
.recalculate_udp_avg_processing_time_ns(large_duration, &connect_labels, now)
539509
.await;
540510

541511
// Should handle large numbers without overflow
@@ -629,7 +599,7 @@ mod tests {
629599
// First calculation: no connections recorded yet, should result in infinity
630600
let processing_time_1 = Duration::from_nanos(2000);
631601
let avg_1 = repo
632-
.recalculate_udp_avg_connect_processing_time_ns(processing_time_1, &connect_labels, now)
602+
.recalculate_udp_avg_processing_time_ns(processing_time_1, &connect_labels, now)
633603
.await;
634604

635605
assert!(
@@ -647,7 +617,7 @@ mod tests {
647617
let processing_time_2 = Duration::from_nanos(3000);
648618
let connect_labels = LabelSet::from([("request_kind", "connect")]);
649619
let avg_2 = repo
650-
.recalculate_udp_avg_connect_processing_time_ns(processing_time_2, &connect_labels, now)
620+
.recalculate_udp_avg_processing_time_ns(processing_time_2, &connect_labels, now)
651621
.await;
652622

653623
// There is one connection, so the average should be:

0 commit comments

Comments
 (0)