Skip to content

Commit 8079c50

Browse files
fakeshadowrobjtede
andauthored
Add ServerWorker::restart_service method (#314)
Co-authored-by: Rob Ede <[email protected]>
1 parent 05689b8 commit 8079c50

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

actix-server/src/worker.rs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,13 @@ impl ServerWorker {
262262
WorkerHandle::new(idx, tx1, tx2, avail)
263263
}
264264

265+
fn restart_service(&mut self, token: Token, idx: usize) {
266+
let factory = &self.factories[idx];
267+
trace!("Service {:?} failed, restarting", factory.name(token));
268+
self.services[token.0].status = WorkerServiceStatus::Restarting;
269+
self.state = WorkerState::Restarting(idx, token, factory.create());
270+
}
271+
265272
fn shutdown(&mut self, force: bool) {
266273
self.services
267274
.iter_mut()
@@ -376,13 +383,7 @@ impl Future for ServerWorker {
376383
}
377384
Ok(false) => Poll::Pending,
378385
Err((token, idx)) => {
379-
trace!(
380-
"Service {:?} failed, restarting",
381-
self.factories[idx].name(token)
382-
);
383-
self.services[token.0].status = WorkerServiceStatus::Restarting;
384-
self.state =
385-
WorkerState::Restarting(idx, token, self.factories[idx].create());
386+
self.restart_service(token, idx);
386387
self.poll(cx)
387388
}
388389
},
@@ -437,22 +438,16 @@ impl Future for ServerWorker {
437438
// actively poll stream and handle worker command
438439
WorkerState::Available => loop {
439440
match self.check_readiness(cx) {
440-
Ok(true) => (),
441+
Ok(true) => {}
441442
Ok(false) => {
442443
trace!("Worker is unavailable");
443444
self.availability.set(false);
444445
self.state = WorkerState::Unavailable;
445446
return self.poll(cx);
446447
}
447448
Err((token, idx)) => {
448-
trace!(
449-
"Service {:?} failed, restarting",
450-
self.factories[idx].name(token)
451-
);
449+
self.restart_service(token, idx);
452450
self.availability.set(false);
453-
self.services[token.0].status = WorkerServiceStatus::Restarting;
454-
self.state =
455-
WorkerState::Restarting(idx, token, self.factories[idx].create());
456451
return self.poll(cx);
457452
}
458453
}

0 commit comments

Comments
 (0)