fix impact minimizing code
This commit is contained in:
parent
9f04bd5251
commit
c20cae324d
8
main.c
8
main.c
|
@ -42,10 +42,10 @@ int main(int argc, char *argv[]) {
|
|||
printf("→ By jobs:\n");
|
||||
manager_dump_jobs(m, stdout, "\t");
|
||||
|
||||
/* if ((r = manager_loop(m)) < 0) { */
|
||||
/* log_error("Failed to run mainloop: %s", strerror(-r)); */
|
||||
/* goto finish; */
|
||||
/* } */
|
||||
if ((r = manager_loop(m)) < 0) {
|
||||
log_error("Failed to run mainloop: %s", strerror(-r));
|
||||
goto finish;
|
||||
}
|
||||
|
||||
retval = 0;
|
||||
|
||||
|
|
20
manager.c
20
manager.c
|
@ -563,6 +563,7 @@ static void transaction_minimize_impact(Manager *m) {
|
|||
|
||||
HASHMAP_FOREACH(j, m->transaction_jobs, i) {
|
||||
LIST_FOREACH(transaction, j, j) {
|
||||
bool stops_running_service, changes_existing_job;
|
||||
|
||||
/* If it matters, we shouldn't drop it */
|
||||
if (j->matters_to_anchor)
|
||||
|
@ -571,12 +572,25 @@ static void transaction_minimize_impact(Manager *m) {
|
|||
/* Would this stop a running service?
|
||||
* Would this change an existing job?
|
||||
* If so, let's drop this entry */
|
||||
if ((j->type != JOB_STOP || UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(j->unit))) &&
|
||||
(!j->unit->meta.job || job_type_is_conflicting(j->type, j->unit->meta.job->state)))
|
||||
|
||||
stops_running_service =
|
||||
j->type == JOB_STOP && UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(j->unit));
|
||||
|
||||
changes_existing_job =
|
||||
j->unit->meta.job && job_type_is_conflicting(j->type, j->unit->meta.job->state);
|
||||
|
||||
if (!stops_running_service && !changes_existing_job)
|
||||
continue;
|
||||
|
||||
if (stops_running_service)
|
||||
log_debug("%s/%s would stop a running service.", unit_id(j->unit), job_type_to_string(j->type));
|
||||
|
||||
if (changes_existing_job)
|
||||
log_debug("%s/%s would change existing job.", unit_id(j->unit), job_type_to_string(j->type));
|
||||
|
||||
/* Ok, let's get rid of this */
|
||||
log_debug("Deleting %s/%s to minimize impact", unit_id(j->unit), job_type_to_string(j->type));
|
||||
log_debug("Deleting %s/%s to minimize impact.", unit_id(j->unit), job_type_to_string(j->type));
|
||||
|
||||
transaction_delete_job(m, j);
|
||||
again = true;
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue