summaryrefslogtreecommitdiff
path: root/src/job.c
AgeCommit message (Collapse)Author
2012-04-05job: use a lookup table for merging of job typesMichal Schmidt
It is easier to see what job_type_merge() is doing when the merging rules are written in the form of a table. job_type_is_superset() contained redundant information. It can be simplified to a simple rule: Type A is a superset of B iff merging A with B gives A. Two job types are conflicting iff they are not mergeable. Make job_type_lookup_merge() the core function to decide the type merging. All other job_type_*() are just short wrappers around it. They can be inline. test-job-type gives the same results as before. btw, the systemd binary is smaller by almost 1 KB.
2012-03-28job: add debug prints where job type gets changedMichal Schmidt
2012-03-28job: fix loss of ordering with restart jobsMichal Schmidt
Suppose that foo.service/start is a job waiting on other job bar.service/start to finish. And then foo.service/restart is enqueued (not using --ignore-dependencies). Currently this makes foo.service start immediately, forgetting about the ordering to bar.service. The runnability check for JOB_RESTART jobs looks only at dependencies for stopping. That's actually correct, because restart jobs should be treated the same as stop jobs at first. The bug is that job_run_and_invalidate() does not treat them exactly the same as stop jobs. unit_start() gets called without checking for the runnability of the converted JOB_START job. The fix is to simplify the switch in job_run_and_invalidate(). Handle JOB_RESTART identically to JOB_STOP. Also simplify the handling of JOB_TRY_RESTART - just convert it to JOB_RESTART if the unit is active and let it fall through to the JOB_RESTART case. Similarly for JOB_RELOAD_OR_START - have a fall through to JOB_START. In job_finish_and_invalidate() it's not necessary to check for JOB_TRY_RESTART with JOB_DONE, because JOB_TRY_RESTART jobs will have been converted to JOB_RESTART already. Speeding up the restart of services in "auto-restart" state still works as before. Improves: https://bugzilla.redhat.com/show_bug.cgi?id=753586 but it's still not perfect. With this fix the try-restart action will wait for the restart to complete in the right order, but the optimal behaviour would be to finish quickly (without disturbing the start job).
2012-01-16unit: remove union UnitMichal Schmidt
Now that objects of all unit types are allocated the exact amount of memory they need, the Unit union has lost its purpose. Remove it. "Unit" is a more natural name for the base unit class than "Meta", so rename Meta to Unit. Access to members of the base class gets simplified.
2012-01-14util: rework ANSI escape code macrosLennart Poettering
2011-11-11job: colored status messages on bootMichal Schmidt
The lack or green/red status marks on boot has been described by some users as "critical", "dramatic", "dealbreaker", "showstopper". Seriously.
2011-10-17manager: fix a crash in isolatingMichal Schmidt
HASHMAP_FOREACH is safe against the removal of the current entry, but not against the removal of other entries. job_finish_and_invalidate() can recursively remove other entries. It triggered an assertion failure: Assertion 'j->installed' failed at src/manager.c:1218, function transaction_apply(). Aborting. Fix the crash by iterating from the beginning when there is a possibility that the iterator could be invalid. It is O(n^2) in the worst case, but that's better than a crash. https://bugzilla.redhat.com/show_bug.cgi?id=717325
2011-09-21job: after converting a job from restart to start readd it to run queueLennart Poettering
When we converted a restart job it's time to look again whether any of its dependencies are now runnable. https://bugzilla.redhat.com/show_bug.cgi?id=735013
2011-04-16job: also print status messages when we successfully started a unitLennart Poettering
2011-04-07unit: introduce OnFailureIsolate=Lennart Poettering
2011-04-06job: fix deserialization of jobs: do not ignore orderingLennart Poettering
2011-03-08job: introduce new job result code 'skipped' to use when pre conditions of ↵Lennart Poettering
job did not apply https://bugzilla.redhat.com/show_bug.cgi?id=682245 https://bugzilla.redhat.com/show_bug.cgi?id=635780
2011-03-08job: convert job type as early as we can, to simplify things a bitLennart Poettering
2011-02-28Spelling CorrectionsHarald Hoyer
Just some lame spelling corrections with no functionality.
2011-02-24job: also trigger on-failure dependencies when jobs faile due to ↵Lennart Poettering
dependencies, timeout
2011-02-24job: don't access j->type when j is already freedLennart Poettering
2011-02-24job: start job timeout on enqueuing not when we start to process a jobLennart Poettering
This practically reverses 23e1e0c4a3bc93fb841ac9575953ed5d0ef5282d. This makes it easier to timeout individual jobs so that this timeout can be relied on, since blocked dependencies will not influence the timeout.
2011-02-24dbus: pass along information why a job failed when it failed (dbus api change!)Lennart Poettering
2011-02-23job: start job timer when we begin running the job, not already when we add ↵Lennart Poettering
it to the queue of jobs
2011-02-16systemctl: introduce --ignore-dependenciesLennart Poettering
2011-02-14job: make status message printing more verboseLennart Poettering
2010-11-18job: make sure we don't fail umount.target if a mount unit failed to stopLennart Poettering
2010-11-14job: make it possible to wait for devices to be unpluggedLennart Poettering
2010-10-29job: recursively fail BoundBy dependenciesLennart Poettering
2010-10-29unit: get rid of gnoreDependencyFailure= instead treat ConflictedBy= as ↵Lennart Poettering
weaker counterpart of Conflicts=, similar to Wants= vs. Requires=
2010-09-27job: show failure message only for start jobsLennart Poettering
2010-09-23dbus: export number of total failed jobs on D-Bus interfaceLennart Poettering
2010-09-21manager: measure startup timesLennart Poettering
2010-08-31manager: add missing second part of s/maintenance/failed/Matthew Miller
2010-08-14emacs: make sure nobody accidently adds tabs to our sourcesLennart Poettering
2010-08-13job: don't accidently access a job that doesn't exist anymoreLennart Poettering
2010-08-11gc: remove a lot of unused codeLennart Poettering
2010-08-09manager: when two pending jobs conflict, keep the one that "conflicts", ↵Lennart Poettering
remove the one that is "conflicted" This gives the writer of units control which unit is kept and which is stopped when two units conflict.
2010-07-21job: make sure restart jobs are readded to the run queue after conversion to ↵Lennart Poettering
start jobs
2010-07-17job: timeout every job independently of the unitLennart Poettering
2010-07-12unit: introduce IgnoreDependencyFailure=Lennart Poettering
2010-07-08job: when converting restart jobs, move them to WAITING stateLennart Poettering
2010-07-07unit: don't cancel dependent jobs if a stopped daemon returned an error codeLennart Poettering
2010-07-07manager: optionally print status updates to console on bootLennart Poettering
2010-07-05dbus: send signals about jobs to the clients having created them ↵Lennart Poettering
unconditionally, and thus get rid of broadcast signals in most cases
2010-07-01unit: shorten active state enums to make systemctl output nicerLennart Poettering
2010-07-01unit: add new abstracted maintenance state for unitsLennart Poettering
2010-05-22systemctl: add --block switch for synchronous starting of unitsLennart Poettering
2010-05-20job: don't show (null) prefix in dumpLennart Poettering
2010-05-16build-sys: move source files to subdirectoryLennart Poettering