diff --git a/actix-router/src/resource.rs b/actix-router/src/resource.rs index 3808bc25..8dbef26c 100644 --- a/actix-router/src/resource.rs +++ b/actix-router/src/resource.rs @@ -28,6 +28,7 @@ enum PatternElement { } #[derive(Clone, Debug)] +#[allow(clippy::large_enum_variant)] enum PatternType { Static(String), Prefix(String), diff --git a/actix-rt/src/arbiter.rs b/actix-rt/src/arbiter.rs index 8279cb90..7eae662a 100644 --- a/actix-rt/src/arbiter.rs +++ b/actix-rt/src/arbiter.rs @@ -113,10 +113,11 @@ impl Arbiter { where F: Fn() -> tokio::runtime::Runtime + Send + 'static, { - let id = COUNT.fetch_add(1, Ordering::Relaxed); - let system_id = System::current().id(); - let name = format!("actix-rt|system:{}|arbiter:{}", system_id, id); let sys = System::current(); + let system_id = sys.id(); + let arb_id = COUNT.fetch_add(1, Ordering::Relaxed); + + let name = format!("actix-rt|system:{}|arbiter:{}", system_id, arb_id); let (tx, rx) = mpsc::unbounded_channel(); let (ready_tx, ready_rx) = std::sync::mpsc::channel::<()>(); @@ -136,7 +137,7 @@ impl Arbiter { // register arbiter let _ = System::current() .tx() - .send(SystemCommand::RegisterArbiter(id, hnd)); + .send(SystemCommand::RegisterArbiter(arb_id, hnd)); ready_tx.send(()).unwrap(); @@ -146,7 +147,7 @@ impl Arbiter { // deregister arbiter let _ = System::current() .tx() - .send(SystemCommand::DeregisterArbiter(id)); + .send(SystemCommand::DeregisterArbiter(arb_id)); } }) .unwrap_or_else(|err| { diff --git a/actix-rt/tests/tests.rs b/actix-rt/tests/tests.rs index f9634aba..56b5e8a6 100644 --- a/actix-rt/tests/tests.rs +++ b/actix-rt/tests/tests.rs @@ -198,6 +198,9 @@ fn system_stop_stops_arbiters() { System::current().stop(); sys.run().unwrap(); + // account for slightly slow thread de-spawns (only observed on windows) + thread::sleep(Duration::from_millis(100)); + // arbiter should be dead and return false assert!(!Arbiter::current().spawn_fn(|| {})); assert!(!arb.spawn_fn(|| {}));