core: rework counting of running jobs

Let's unify the code that counts the running jobs a bit, in order to
make sure we are less likely to miss one.

This is related to this bug:

https://bugs.freedesktop.org/show_bug.cgi?id=87349

However, it probably won't fix it fully, and I cannot reproduce the issue.

The change also adds an explicit assert change when the counter is off.
This commit is contained in:
Lennart Poettering
2015-01-05 17:54:59 +01:00
parent bbe05969ec
commit 9c3349e23b
3 changed files with 52 additions and 28 deletions
+6 -5
View File
@@ -2674,7 +2674,9 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
if (streq(l, "job")) {
if (v[0] == '\0') {
/* new-style serialized job */
Job *j = job_new_raw(u);
Job *j;
j = job_new_raw(u);
if (!j)
return -ENOMEM;
@@ -2696,12 +2698,11 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
job_free(j);
return r;
}
if (j->state == JOB_RUNNING)
u->manager->n_running_jobs++;
} else {
/* legacy */
JobType type = job_type_from_string(v);
JobType type;
type = job_type_from_string(v);
if (type < 0)
log_debug("Failed to parse job type value %s", v);
else