Merge branch 'master' into master

This commit is contained in:
Rob Ede 2021-11-04 23:53:30 +00:00 committed by GitHub
commit a73891c4cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View File

@ -2,7 +2,9 @@
## Unreleased - 2021-xx-xx ## Unreleased - 2021-xx-xx
* Add `Arbiter::try_current` for situations where thread may or may not have Arbiter context. [#408] * Add `Arbiter::try_current` for situations where thread may or may not have Arbiter context. [#408]
* Start io-uring with `System::new` when feature is enabled. [#395]
[#395]: https://github.com/actix/actix-net/pull/395
[#408]: https://github.com/actix/actix-net/pull/408 [#408]: https://github.com/actix/actix-net/pull/408

View File

@ -296,10 +296,11 @@ impl ServerWorker {
// get actix system context if it is set // get actix system context if it is set
let sys = System::try_current(); let sys = System::try_current();
// TODO: wait for server startup with sync channel // service factories initialization channel
let (factory_tx, factory_rx) = std::sync::mpsc::sync_channel(1);
std::thread::Builder::new() std::thread::Builder::new()
.name("eofibef".to_owned()) .name(format!("actix-server worker {}", idx))
.spawn(move || { .spawn(move || {
// forward existing actix system context // forward existing actix system context
if let Some(sys) = sys { if let Some(sys) = sys {
@ -350,6 +351,8 @@ impl ServerWorker {
} }
}; };
factory_tx.send(()).unwrap();
// a third spawn to make sure ServerWorker runs as non boxed future. // a third spawn to make sure ServerWorker runs as non boxed future.
spawn(ServerWorker { spawn(ServerWorker {
rx, rx,
@ -369,6 +372,9 @@ impl ServerWorker {
}) })
.expect("worker thread error/panic"); .expect("worker thread error/panic");
// wait for service factories initialization
factory_rx.recv().unwrap();
Ok(handle_pair(idx, tx1, tx2, counter)) Ok(handle_pair(idx, tx1, tx2, counter))
} }

View File

@ -312,7 +312,7 @@ async fn test_service_restart() {
h.join().unwrap().unwrap(); h.join().unwrap().unwrap();
} }
#[cfg_attr(not(target_os = "linux"), ignore)] #[ignore] // non-deterministic on CI
#[actix_rt::test] #[actix_rt::test]
async fn worker_restart() { async fn worker_restart() {
use actix_service::{Service, ServiceFactory}; use actix_service::{Service, ServiceFactory};