Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.
Launchpad entry: https://launchpad.net/products/upstart/+spec/remove-depends
Upstart currently has trivial support for "dependencies" which cause jobs to be held in the waiting state until the dependency is running. This specification proposes removing that feature.
This feature was added to allow jobs to wait on other jobs before properly starting; envisioned as a way to perform more complex state-based tracking than events alone allow. In practice, this feature is not flexible enough to meet the requirements and the implementation of ComplexEventConfig removes the need for it entirely.
This scope of this specification is limited to the removal of an unused feature in upstart, it does not propose its replacement.
The depends configuration file stanza will be removed.
The corresponding dependency event will be removed.
The configuration file parsing code will be modified to remove the depends stanza entirely.
Other changes are limited to init/job.h and init/job.c.
The depends member of the Job structure, and the associated JobName structure can be removed.
With no dependencies to release, the job_change_state function can be modified to remove the call to the job_release_depends function. The job_release_depends function can also be removed.
Starting a job can now happen straight away, so the dependency iteration code in job_start can be removed. This has the benefit of removing an evil stack recursion from upstart, making the code flow somewhat more logical again.
Data preservation and migration
These changes remove an undocumented feature, so should not affect any existing jobs.