@@ -114,7 +114,7 @@ impl Reaper {
114
114
mod inner {
115
115
use std:: {
116
116
sync:: { Arc , RwLock } ,
117
- time:: Duration ,
117
+ // time::Duration,
118
118
} ;
119
119
120
120
#[ allow( clippy:: wildcard_imports) ]
@@ -128,8 +128,8 @@ mod inner {
128
128
// basic helper for x-thread comms in Reaper
129
129
#[ derive( Debug , Clone , Copy , PartialEq , Eq ) ]
130
130
enum InterState {
131
- // We're booting, no pivot yet
132
- Booting ,
131
+ // // We're booting, no pivot yet
132
+ // Booting,
133
133
// We've booted and pivot is ready
134
134
PivotReady ,
135
135
// We're quitting (ctrl+c for tests and such)
@@ -153,7 +153,8 @@ mod inner {
153
153
test_only_init_phase_override : Option < ProtocolPhase > ,
154
154
) {
155
155
let handles2 = handles. clone ( ) ;
156
- let inter_state = Arc :: new ( RwLock :: new ( InterState :: Booting ) ) ;
156
+ // TODO: debugging, set to Booting to revert
157
+ let inter_state = Arc :: new ( RwLock :: new ( InterState :: PivotReady ) ) ;
157
158
let server_state = inter_state. clone ( ) ;
158
159
159
160
std:: thread:: spawn ( move || {
@@ -170,49 +171,50 @@ mod inner {
170
171
test_only_init_phase_override,
171
172
) ;
172
173
// send a shared version of state and the async pool to each processor
173
- let mut processor = AsyncProcessor :: new (
174
+ let processor = AsyncProcessor :: new (
174
175
protocol_state. shared ( ) ,
175
176
app_pool. shared ( ) ,
176
177
) ;
177
178
// listen_all will multiplex the processor accross all sockets
178
- let mut server =
179
+ let server =
179
180
AsyncSocketServer :: listen_all ( pool, & processor)
180
181
. expect ( "unable to get listen task list" ) ;
181
182
182
- loop {
183
- let ( manifest_present, pool_size) =
184
- get_pool_size_from_pivot_args ( & handles2) ;
185
- let pool_size = pool_size. unwrap_or ( 1 ) ;
186
- // expand server to pool_size + 1 (due to qos-host extra socket)
187
- server. listen_to ( pool_size + 1 , & processor) . expect (
188
- "unable to listen_to on the running server" ,
189
- ) ;
190
- // expand app connections to pool_size
191
- processor. expand_to ( pool_size) . await . expect (
192
- "unable to expand_to on the processor app pool" ,
193
- ) ;
194
-
195
- if manifest_present {
196
- * server_state. write ( ) . unwrap ( ) =
197
- InterState :: PivotReady ;
198
- eprintln ! ( "manifest is present, breaking out of server check loop" ) ;
199
- break ;
200
- }
201
-
202
- // sleep up to 1s, checking for ctrl+c, if it happens break out
203
- if let Ok ( ctrl_res) = tokio:: time:: timeout (
204
- Duration :: from_secs ( 1 ) ,
205
- tokio:: signal:: ctrl_c ( ) ,
206
- )
207
- . await
208
- {
209
- return ctrl_c_handler (
210
- ctrl_res,
211
- server,
212
- & server_state,
213
- ) ;
214
- }
215
- }
183
+ // TODO: debugging
184
+ // loop {
185
+ // let (manifest_present, pool_size) =
186
+ // get_pool_size_from_pivot_args(&handles2);
187
+ // let pool_size = pool_size.unwrap_or(1);
188
+ // // expand server to pool_size + 1 (due to qos-host extra socket)
189
+ // server.listen_to(pool_size + 1, &processor).expect(
190
+ // "unable to listen_to on the running server",
191
+ // );
192
+ // // expand app connections to pool_size
193
+ // processor.expand_to(pool_size).await.expect(
194
+ // "unable to expand_to on the processor app pool",
195
+ // );
196
+
197
+ // if manifest_present {
198
+ // *server_state.write().unwrap() =
199
+ // InterState::PivotReady;
200
+ // eprintln!("manifest is present, breaking out of server check loop");
201
+ // break;
202
+ // }
203
+
204
+ // // sleep up to 1s, checking for ctrl+c, if it happens break out
205
+ // if let Ok(ctrl_res) = tokio::time::timeout(
206
+ // Duration::from_secs(1),
207
+ // tokio::signal::ctrl_c(),
208
+ // )
209
+ // .await
210
+ // {
211
+ // return ctrl_c_handler(
212
+ // ctrl_res,
213
+ // server,
214
+ // &server_state,
215
+ // );
216
+ // }
217
+ // }
216
218
// wait until ctrl+c
217
219
ctrl_c_handler (
218
220
tokio:: signal:: ctrl_c ( ) . await ,
@@ -303,79 +305,80 @@ mod inner {
303
305
Err ( err) => panic ! ( "{err}" ) ,
304
306
}
305
307
}
306
-
307
- // return if we have manifest and get pool_size args if present from it
308
- fn get_pool_size_from_pivot_args ( handles : & Handles ) -> ( bool , Option < u32 > ) {
309
- if let Ok ( envelope) = handles. get_manifest_envelope ( ) {
310
- ( true , extract_pool_size_arg ( & envelope. manifest . pivot . args ) )
311
- } else {
312
- ( false , None )
313
- }
314
- }
315
-
316
- // find the u32 value of --pool-size argument passed to the pivot if present
317
- fn extract_pool_size_arg ( args : & [ String ] ) -> Option < u32 > {
318
- if let Some ( ( i, _) ) =
319
- args. iter ( ) . enumerate ( ) . find ( |( _, a) | * a == "--pool-size" )
320
- {
321
- if let Some ( pool_size_str) = args. get ( i + 1 ) {
322
- match pool_size_str. parse :: < u32 > ( ) {
323
- Ok ( pool_size) => Some ( pool_size) ,
324
- Err ( _) => None ,
325
- }
326
- } else {
327
- None
328
- }
329
- } else {
330
- None
331
- }
332
- }
333
-
334
- #[ cfg( test) ]
335
- mod test {
336
- use super :: * ;
337
-
338
- #[ test]
339
- fn extract_pool_size_arg_works ( ) {
340
- // no arg
341
- assert_eq ! (
342
- extract_pool_size_arg( & vec![
343
- "unrelated" . to_owned( ) ,
344
- "--args" . to_owned( ) ,
345
- ] ) ,
346
- None
347
- ) ;
348
-
349
- // should work
350
- assert_eq ! (
351
- extract_pool_size_arg( & vec![
352
- "--pool-size" . to_owned( ) ,
353
- "8" . to_owned( ) ,
354
- ] ) ,
355
- Some ( 8 )
356
- ) ;
357
-
358
- // wrong number, expect None
359
- assert_eq ! (
360
- extract_pool_size_arg( & vec![
361
- "--pool-size" . to_owned( ) ,
362
- "8a" . to_owned( ) ,
363
- ] ) ,
364
- None
365
- ) ;
366
-
367
- // duplicate arg, use 1st
368
- assert_eq ! (
369
- extract_pool_size_arg( & vec![
370
- "--pool-size" . to_owned( ) ,
371
- "8" . to_owned( ) ,
372
- "--pool-size" . to_owned( ) ,
373
- "9" . to_owned( ) ,
374
- ] ) ,
375
- Some ( 8 )
376
- ) ;
377
- }
378
- }
379
308
}
380
309
310
+ // // return if we have manifest and get pool_size args if present from it
311
+ // fn get_pool_size_from_pivot_args(handles: &Handles) -> (bool, Option<u32>) {
312
+ // if let Ok(envelope) = handles.get_manifest_envelope() {
313
+ // (true, extract_pool_size_arg(&envelope.manifest.pivot.args))
314
+ // } else {
315
+ // (false, None)
316
+ // }
317
+ // }
318
+
319
+ // // find the u32 value of --pool-size argument passed to the pivot if present
320
+ // fn extract_pool_size_arg(args: &[String]) -> Option<u32> {
321
+ // if let Some((i, _)) =
322
+ // args.iter().enumerate().find(|(_, a)| *a == "--pool-size")
323
+ // {
324
+ // if let Some(pool_size_str) = args.get(i + 1) {
325
+ // match pool_size_str.parse::<u32>() {
326
+ // Ok(pool_size) => Some(pool_size),
327
+ // Err(_) => None,
328
+ // }
329
+ // } else {
330
+ // None
331
+ // }
332
+ // } else {
333
+ // None
334
+ // }
335
+ // }
336
+
337
+ // #[cfg(test)]
338
+ // mod test {
339
+ // use super::*;
340
+
341
+ // #[test]
342
+ // fn extract_pool_size_arg_works() {
343
+ // // no arg
344
+ // assert_eq!(
345
+ // extract_pool_size_arg(&vec![
346
+ // "unrelated".to_owned(),
347
+ // "--args".to_owned(),
348
+ // ]),
349
+ // None
350
+ // );
351
+
352
+ // // should work
353
+ // assert_eq!(
354
+ // extract_pool_size_arg(&vec![
355
+ // "--pool-size".to_owned(),
356
+ // "8".to_owned(),
357
+ // ]),
358
+ // Some(8)
359
+ // );
360
+
361
+ // // wrong number, expect None
362
+ // assert_eq!(
363
+ // extract_pool_size_arg(&vec![
364
+ // "--pool-size".to_owned(),
365
+ // "8a".to_owned(),
366
+ // ]),
367
+ // None
368
+ // );
369
+
370
+ // // duplicate arg, use 1st
371
+ // assert_eq!(
372
+ // extract_pool_size_arg(&vec![
373
+ // "--pool-size".to_owned(),
374
+ // "8".to_owned(),
375
+ // "--pool-size".to_owned(),
376
+ // "9".to_owned(),
377
+ // ]),
378
+ // Some(8)
379
+ // );
380
+ // }
381
+ // }
382
+ // }
383
+
381
384
// See qos_test/tests/async_reaper for more tests
0 commit comments