if SHUTTING_DOWN.fetch_or(true, atomic::Ordering::Relaxed) { process::exit(1); } println!("Shutting down gracefully. Press again to shutdown immediately."); LISTENERS .lock() .unwrap() .iter() .for_each(|handle| handle.graceful_shutdown(Some(Duration::from_millis(100)))); }) .expect("Error setting handler"); match Arguments::parse().run() { Err(err) => { eprintln!("error: {err}"); err .chain() .skip(1) .for_each(|cause| eprintln!("because: {cause}")); if env::var_os("RUST_BACKTRACE") .map(|val| val == "1") .unwrap_or_default() { eprintln!("{}", err.backtrace()); } gracefully_shutdown_indexer(); process::exit(1); } Ok(output) => output.print_json(), } gracefully_shutdown_indexer(); }