force stop and freeze wrapping
parent
81df3f8435
commit
08e99385b9
|
|
@ -191,20 +191,20 @@ pub mod v2 {
|
||||||
impl ProcessUnit for ProcessesController {
|
impl ProcessUnit for ProcessesController {
|
||||||
async fn process(&mut self) {
|
async fn process(&mut self) {
|
||||||
if self.negative_events.len() == 0 {
|
if self.negative_events.len() == 0 {
|
||||||
match self.state {
|
let conditions = (is_active(&self.name).await, is_frozen(&self.name).await);
|
||||||
ProcessState::Holding => {
|
let state = &self.state;
|
||||||
info!("No negative dependecies events on {} process. Unfreezing ...", self.name);
|
match (state, conditions) {
|
||||||
|
(ProcessState::Holding, (_, _)) => {
|
||||||
|
info!("No negative dependecies events on {} frozen process. Unfreezing ...", self.name);
|
||||||
if let Err(er) = unfreeze_process(&self.name).await {
|
if let Err(er) = unfreeze_process(&self.name).await {
|
||||||
error!("Cannot unfreeze process {} : {}", self.name, er);
|
error!("Cannot unfreeze process {} : {}", self.name, er);
|
||||||
} else {
|
} else {
|
||||||
self.state = ProcessState::Pending;
|
self.state = ProcessState::Pending;
|
||||||
// self.pid = Pid::new_from_output(get_pid(self.name.as_ref()).await);
|
|
||||||
// info!("{}: New PID - {}", self.name, self.pid);
|
|
||||||
info!("Process {} was unfreezed", &self.name);
|
info!("Process {} was unfreezed", &self.name);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ProcessState::Stopped => {
|
(ProcessState::Stopped, (_, _)) => {
|
||||||
info!("No negative dependecies events on {} process. Starting ...", self.name);
|
info!("No negative dependecies events on stopped {} process. Starting ...", self.name);
|
||||||
match start_process(&self.name, &self.bin).await {
|
match start_process(&self.name, &self.bin).await {
|
||||||
Ok(pid) => {
|
Ok(pid) => {
|
||||||
self.state = ProcessState::Pending;
|
self.state = ProcessState::Pending;
|
||||||
|
|
@ -216,6 +216,28 @@ pub mod v2 {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
(ProcessState::Pending, (false, false)) => {
|
||||||
|
info!("{} process was impermissibly stopped. Starting ...", self.name);
|
||||||
|
match start_process(&self.name, &self.bin).await {
|
||||||
|
Ok(pid) => {
|
||||||
|
self.state = ProcessState::Pending;
|
||||||
|
self.pid = Pid(pid);
|
||||||
|
info!("{}: New PID - {}", self.name, self.pid);
|
||||||
|
},
|
||||||
|
Err(er) => {
|
||||||
|
error!("Cannot start process {} : {}", self.name, er);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
(ProcessState::Pending, (true, true)) => {
|
||||||
|
info!("No negative dependecies events on {} process. Unfreezing ...", self.name);
|
||||||
|
if let Err(er) = unfreeze_process(&self.name).await {
|
||||||
|
error!("Cannot unfreeze process {} : {}", self.name, er);
|
||||||
|
} else {
|
||||||
|
self.state = ProcessState::Pending;
|
||||||
|
info!("Process {} was unfreezed", &self.name);
|
||||||
|
}
|
||||||
|
},
|
||||||
_ => {},
|
_ => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue