@@ -4,14 +4,17 @@ use http_body::Body;
44use linkerd_error:: Error ;
55use linkerd_http_classify:: { ClassifyEos , ClassifyResponse } ;
66use linkerd_stack:: { NewService , Param , Proxy } ;
7+ use parking_lot:: Mutex ;
78use pin_project:: { pin_project, pinned_drop} ;
8- use std:: fmt:: Debug ;
9- use std:: hash:: Hash ;
10- use std:: marker:: PhantomData ;
11- use std:: pin:: Pin ;
12- use std:: sync:: { Arc , Mutex } ;
13- use std:: task:: { Context , Poll } ;
14- use std:: time:: Instant ;
9+ use std:: {
10+ fmt:: Debug ,
11+ hash:: Hash ,
12+ marker:: PhantomData ,
13+ pin:: Pin ,
14+ sync:: Arc ,
15+ task:: { Context , Poll } ,
16+ time:: Instant ,
17+ } ;
1518
1619/// Wraps services to record metrics.
1720#[ derive( Debug ) ]
@@ -126,13 +129,13 @@ where
126129 type Service = HttpMetrics < N :: Service , C > ;
127130
128131 fn new_service ( & mut self , target : T ) -> Self :: Service {
129- let metrics = match self . registry . lock ( ) {
130- Ok ( mut r) => Some (
132+ let metrics = {
133+ let mut r = self . registry . lock ( ) ;
134+ Some (
131135 r. entry ( target. param ( ) )
132136 . or_insert_with ( || Arc :: new ( Mutex :: new ( Metrics :: default ( ) ) ) )
133137 . clone ( ) ,
134- ) ,
135- Err ( _) => None ,
138+ )
136139 } ;
137140
138141 let inner = self . inner . new_service ( target) ;
@@ -182,10 +185,9 @@ where
182185 if req. body ( ) . is_end_stream ( ) {
183186 if let Some ( lock) = req_metrics. take ( ) {
184187 let now = Instant :: now ( ) ;
185- if let Ok ( mut metrics) = lock. lock ( ) {
186- ( * metrics) . last_update = now;
187- ( * metrics) . total . incr ( ) ;
188- }
188+ let mut metrics = lock. lock ( ) ;
189+ ( * metrics) . last_update = now;
190+ ( * metrics) . total . incr ( ) ;
189191 }
190192 }
191193
@@ -232,10 +234,9 @@ where
232234 if req. body ( ) . is_end_stream ( ) {
233235 if let Some ( lock) = req_metrics. take ( ) {
234236 let now = Instant :: now ( ) ;
235- if let Ok ( mut metrics) = lock. lock ( ) {
236- ( * metrics) . last_update = now;
237- ( * metrics) . total . incr ( ) ;
238- }
237+ let mut metrics = lock. lock ( ) ;
238+ ( * metrics) . last_update = now;
239+ ( * metrics) . total . incr ( ) ;
239240 }
240241 }
241242
@@ -324,10 +325,9 @@ where
324325
325326 if let Some ( lock) = this. metrics . take ( ) {
326327 let now = Instant :: now ( ) ;
327- if let Ok ( mut metrics) = lock. lock ( ) {
328- ( * metrics) . last_update = now;
329- ( * metrics) . total . incr ( ) ;
330- }
328+ let mut metrics = lock. lock ( ) ;
329+ ( * metrics) . last_update = now;
330+ ( * metrics) . total . incr ( ) ;
331331 }
332332
333333 Poll :: Ready ( frame)
@@ -390,10 +390,7 @@ where
390390 Some ( lock) => lock,
391391 None => return ,
392392 } ;
393- let mut metrics = match lock. lock ( ) {
394- Ok ( m) => m,
395- Err ( _) => return ,
396- } ;
393+ let mut metrics = lock. lock ( ) ;
397394
398395 ( * metrics) . last_update = now;
399396
@@ -434,10 +431,7 @@ fn measure_class<C: Hash + Eq>(
434431 status : Option < http:: StatusCode > ,
435432) {
436433 let now = Instant :: now ( ) ;
437- let mut metrics = match lock. lock ( ) {
438- Ok ( m) => m,
439- Err ( _) => return ,
440- } ;
434+ let mut metrics = lock. lock ( ) ;
441435
442436 ( * metrics) . last_update = now;
443437
0 commit comments