@@ -58,23 +58,24 @@ impl Metrics {
5858 now : DurationSinceUnixEpoch ,
5959 ) -> f64 {
6060 let req_processing_time = req_processing_time. as_nanos ( ) as f64 ;
61- let udp_connections_handled = ( self . udp4_connections_handled ( ) + self . udp6_connections_handled ( ) ) as f64 ;
6261
63- let previous_avg = self . udp_avg_connect_processing_time_ns ( ) ;
62+ let request_accepted_total = self . udp_request_accepted ( label_set ) as f64 ;
6463
65- let new_avg = if udp_connections_handled == 0.0 {
64+ let previous_avg = self . udp_avg_processing_time_ns ( label_set) ;
65+
66+ let new_avg = if request_accepted_total == 0.0 {
6667 req_processing_time
6768 } else {
6869 // Moving average: https://en.wikipedia.org/wiki/Moving_average
69- previous_avg as f64 + ( req_processing_time - previous_avg as f64 ) / udp_connections_handled
70+ previous_avg as f64 + ( req_processing_time - previous_avg as f64 ) / request_accepted_total
7071 } ;
7172
7273 tracing:: debug!(
7374 "Recalculated UDP average connect processing time: {} ns (previous: {} ns, req_processing_time: {} ns, udp_connections_handled: {})" ,
7475 new_avg,
7576 previous_avg,
7677 req_processing_time,
77- udp_connections_handled
78+ request_accepted_total
7879 ) ;
7980
8081 self . update_udp_avg_processing_time_ns ( new_avg, label_set, now) ;
@@ -91,23 +92,23 @@ impl Metrics {
9192 ) -> f64 {
9293 let req_processing_time = req_processing_time. as_nanos ( ) as f64 ;
9394
94- let udp_announces_handled = ( self . udp4_announces_handled ( ) + self . udp6_announces_handled ( ) ) as f64 ;
95+ let request_accepted_total = self . udp_request_accepted ( label_set ) as f64 ;
9596
96- let previous_avg = self . udp_avg_announce_processing_time_ns ( ) ;
97+ let previous_avg = self . udp_avg_processing_time_ns ( label_set ) ;
9798
98- let new_avg = if udp_announces_handled == 0.0 {
99+ let new_avg = if request_accepted_total == 0.0 {
99100 req_processing_time
100101 } else {
101102 // Moving average: https://en.wikipedia.org/wiki/Moving_average
102- previous_avg as f64 + ( req_processing_time - previous_avg as f64 ) / udp_announces_handled
103+ previous_avg as f64 + ( req_processing_time - previous_avg as f64 ) / request_accepted_total
103104 } ;
104105
105106 tracing:: debug!(
106107 "Recalculated UDP average announce processing time: {} ns (previous: {} ns, req_processing_time: {} ns, udp_announces_handled: {})" ,
107108 new_avg,
108109 previous_avg,
109110 req_processing_time,
110- udp_announces_handled
111+ request_accepted_total
111112 ) ;
112113
113114 self . update_udp_avg_processing_time_ns ( new_avg, label_set, now) ;
@@ -124,30 +125,51 @@ impl Metrics {
124125 ) -> f64 {
125126 let req_processing_time = req_processing_time. as_nanos ( ) as f64 ;
126127
127- let udp_scrapes_handled = ( self . udp4_scrapes_handled ( ) + self . udp6_scrapes_handled ( ) ) as f64 ;
128+ let request_accepted_total = self . udp_request_accepted ( label_set ) as f64 ;
128129
129- let previous_avg = self . udp_avg_scrape_processing_time_ns ( ) ;
130+ let previous_avg = self . udp_avg_processing_time_ns ( label_set ) ;
130131
131- let new_avg = if udp_scrapes_handled == 0.0 {
132+ let new_avg = if request_accepted_total == 0.0 {
132133 req_processing_time
133134 } else {
134135 // Moving average: https://en.wikipedia.org/wiki/Moving_average
135- previous_avg as f64 + ( req_processing_time - previous_avg as f64 ) / udp_scrapes_handled
136+ previous_avg as f64 + ( req_processing_time - previous_avg as f64 ) / request_accepted_total
136137 } ;
137138
138139 tracing:: debug!(
139140 "Recalculated UDP average scrape processing time: {} ns (previous: {} ns, req_processing_time: {} ns, udp_scrapes_handled: {})" ,
140141 new_avg,
141142 previous_avg,
142143 req_processing_time,
143- udp_scrapes_handled
144+ request_accepted_total
144145 ) ;
145146
146147 self . update_udp_avg_processing_time_ns ( new_avg, label_set, now) ;
147148
148149 new_avg
149150 }
150151
152+ #[ must_use]
153+ #[ allow( clippy:: cast_sign_loss) ]
154+ #[ allow( clippy:: cast_possible_truncation) ]
155+ pub fn udp_avg_processing_time_ns ( & self , label_set : & LabelSet ) -> u64 {
156+ self . metric_collection
157+ . sum (
158+ & metric_name ! ( UDP_TRACKER_SERVER_PERFORMANCE_AVG_PROCESSING_TIME_NS ) ,
159+ label_set,
160+ )
161+ . unwrap_or_default ( ) as u64
162+ }
163+
164+ #[ must_use]
165+ #[ allow( clippy:: cast_sign_loss) ]
166+ #[ allow( clippy:: cast_possible_truncation) ]
167+ pub fn udp_request_accepted ( & self , label_set : & LabelSet ) -> u64 {
168+ self . metric_collection
169+ . sum ( & metric_name ! ( UDP_TRACKER_SERVER_REQUESTS_ACCEPTED_TOTAL ) , label_set)
170+ . unwrap_or_default ( ) as u64
171+ }
172+
151173 fn update_udp_avg_processing_time_ns ( & mut self , new_avg : f64 , label_set : & LabelSet , now : DurationSinceUnixEpoch ) {
152174 tracing:: debug!(
153175 "Updating average processing time metric to {} ns for label set {}" ,
0 commit comments