@@ -178,40 +178,39 @@ pub async fn scrape(Query(params): Query<Params>) -> Result<Response<Body>, Erro
178178 . or_insert ( value) ;
179179 }
180180
181- if targets. enabled ( & Dimension :: Jobstats ) {
182- if let Ok ( mut child) = tokio:: task:: spawn_blocking ( move || jobstats_metrics_cmd ( ) . spawn ( ) )
181+ if targets. enabled ( & Dimension :: Jobstats )
182+ && let Ok ( mut child) = tokio:: task:: spawn_blocking ( move || jobstats_metrics_cmd ( ) . spawn ( ) )
183183 . await ?
184184 . inspect_err ( |e| tracing:: debug!( "Error while spawning lctl jobstats: {e}" ) )
185- {
186- let reader = BufReader :: with_capacity (
187- 128 * 1_024 ,
188- child. stdout . take ( ) . ok_or ( io:: Error :: new (
189- io:: ErrorKind :: NotFound ,
190- "stdout missing for lctl jobstats call." ,
191- ) ) ?,
192- ) ;
193-
194- let reader_stderr = BufReader :: new ( child. stderr . take ( ) . ok_or ( io:: Error :: new (
185+ {
186+ let reader = BufReader :: with_capacity (
187+ 128 * 1_024 ,
188+ child. stdout . take ( ) . ok_or ( io:: Error :: new (
195189 io:: ErrorKind :: NotFound ,
196- "stderr missing for lctl jobstats call." ,
197- ) ) ?) ;
190+ "stdout missing for lctl jobstats call." ,
191+ ) ) ?,
192+ ) ;
198193
199- tokio:: task:: spawn ( async move {
200- for line in reader_stderr. lines ( ) . map_while ( Result :: ok) {
201- tracing:: debug!( "stderr: {line}" ) ;
202- }
203- } ) ;
194+ let reader_stderr = BufReader :: new ( child. stderr . take ( ) . ok_or ( io:: Error :: new (
195+ io:: ErrorKind :: NotFound ,
196+ "stderr missing for lctl jobstats call." ,
197+ ) ) ?) ;
204198
205- tokio:: task:: spawn_blocking ( move || {
206- if let Err ( e ) = child . wait ( ) {
207- tracing:: debug!( "Unexpected error when waiting for child : {e }" ) ;
208- }
209- } ) ;
199+ tokio:: task:: spawn ( async move {
200+ for line in reader_stderr . lines ( ) . map_while ( Result :: ok ) {
201+ tracing:: debug!( "stderr : {line }" ) ;
202+ }
203+ } ) ;
210204
211- jobstats_stream ( reader, JobstatMetrics :: default ( ) )
212- . await ?
213- . register_metric ( & mut registry) ;
214- }
205+ tokio:: task:: spawn_blocking ( move || {
206+ if let Err ( e) = child. wait ( ) {
207+ tracing:: debug!( "Unexpected error when waiting for child: {e}" ) ;
208+ }
209+ } ) ;
210+
211+ jobstats_stream ( reader, JobstatMetrics :: default ( ) )
212+ . await ?
213+ . register_metric ( & mut registry) ;
215214 }
216215
217216 if targets. enabled ( & Dimension :: Lustre ) {
@@ -316,10 +315,10 @@ mod tests {
316315 #[ serial]
317316 async fn test_metrics_endpoint_is_idempotent ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
318317 let ( request, app) = get_app ( ) ;
319- let original = app. oneshot ( request) . await . unwrap ( ) . as_text ( ) . await ;
318+ let original = app. oneshot ( request) . await . unwrap ( ) . try_into_string ( ) . await ;
320319
321320 let ( request, app) = get_app ( ) ;
322- let new = app. oneshot ( request) . await . unwrap ( ) . as_text ( ) . await ;
321+ let new = app. oneshot ( request) . await . unwrap ( ) . try_into_string ( ) . await ;
323322 assert_eq ! ( original, new) ;
324323
325324 insta:: assert_snapshot!( original) ;
@@ -328,11 +327,11 @@ mod tests {
328327 }
329328
330329 trait AsText {
331- fn as_text ( self ) -> impl Future < Output = String > ;
330+ fn try_into_string ( self ) -> impl Future < Output = String > ;
332331 }
333332
334333 impl AsText for Response < Body > {
335- async fn as_text ( self ) -> String {
334+ async fn try_into_string ( self ) -> String {
336335 let mut body = self . into_body ( ) . into_data_stream ( ) ;
337336 let mut out = vec ! [ ] ;
338337
@@ -355,7 +354,7 @@ mod tests {
355354 #[ serial]
356355 async fn test_app_params ( params : Option < & str > ) {
357356 let request = Request :: builder ( )
358- . uri ( & format ! (
357+ . uri ( format ! (
359358 "/metrics{}" ,
360359 params. map( |p| format!( "?{p}" ) ) . unwrap_or_default( )
361360 ) )
@@ -366,7 +365,10 @@ mod tests {
366365 let response = crate :: routes:: app ( ) . oneshot ( request) . await . unwrap ( ) ;
367366
368367 assert ! ( response. status( ) . is_success( ) ) ;
369- insta:: assert_snapshot!( params. unwrap_or( "default" ) , response. as_text( ) . await ) ;
368+ insta:: assert_snapshot!(
369+ params. unwrap_or( "default" ) ,
370+ response. try_into_string( ) . await
371+ ) ;
370372 }
371373
372374 #[ commandeer( Replay , "lctl" , "lnetctl" ) ]
0 commit comments