diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-11-15 03:44:11 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-11-15 03:44:11 +0100 |
commit | 9b3d90907461b6328cb7ff7fe8160d8d409f2b03 (patch) | |
tree | 117f828fa62c1b9e73850db1353420ad6df47fe5 /src/manager.c | |
parent | 672028dc4e587d510a5fc7f6cdf8038d779b4560 (diff) |
manager: consider jobs already installed as redundant when reducing new transactions
Diffstat (limited to 'src/manager.c')
-rw-r--r-- | src/manager.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/manager.c b/src/manager.c index 32cd642213..a39427b1f6 100644 --- a/src/manager.c +++ b/src/manager.c @@ -907,7 +907,7 @@ static void transaction_drop_redundant(Manager *m) { LIST_FOREACH(transaction, k, j) { if (!job_is_anchor(k) && - job_type_is_redundant(k->type, unit_active_state(k->unit))) + (j->installed || job_type_is_redundant(k->type, unit_active_state(k->unit)))) continue; changes_something = true; @@ -917,7 +917,7 @@ static void transaction_drop_redundant(Manager *m) { if (changes_something) continue; - log_debug("Found redundant job %s/%s, dropping.", j->unit->meta.id, job_type_to_string(j->type)); + /* log_debug("Found redundant job %s/%s, dropping.", j->unit->meta.id, job_type_to_string(j->type)); */ transaction_delete_job(m, j, false); again = true; break; @@ -1069,10 +1069,15 @@ static void transaction_collect_garbage(Manager *m) { again = false; HASHMAP_FOREACH(j, m->transaction_jobs, i) { - if (j->object_list) + if (j->object_list) { + /* log_debug("Keeping job %s/%s because of %s/%s", */ + /* j->unit->meta.id, job_type_to_string(j->type), */ + /* j->object_list->subject ? j->object_list->subject->unit->meta.id : "root", */ + /* j->object_list->subject ? job_type_to_string(j->object_list->subject->type) : "root"); */ continue; + } - log_debug("Garbage collecting job %s/%s", j->unit->meta.id, job_type_to_string(j->type)); + /* log_debug("Garbage collecting job %s/%s", j->unit->meta.id, job_type_to_string(j->type)); */ transaction_delete_job(m, j, true); again = true; break; @@ -1184,8 +1189,10 @@ static int transaction_apply(Manager *m) { } while ((j = hashmap_steal_first(m->transaction_jobs))) { - if (j->installed) + if (j->installed) { + /* log_debug("Skipping already installed job %s/%s as %u", j->unit->meta.id, job_type_to_string(j->type), (unsigned) j->id); */ continue; + } if (j->unit->meta.job) job_free(j->unit->meta.job); @@ -1352,7 +1359,7 @@ static Job* transaction_add_one_job(Manager *m, JobType type, Unit *unit, bool o if (is_new) *is_new = true; - log_debug("Added job %s/%s to transaction.", unit->meta.id, job_type_to_string(type)); + /* log_debug("Added job %s/%s to transaction.", unit->meta.id, job_type_to_string(type)); */ return j; } |