cyclic dependencies, cloud-init.target has After=mutli-user.target

Bug #2003877 reported by Isabelle COWAN-BERGMAN
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
Invalid
Undecided
Unassigned

Bug Description

cloud-init.target is ordered after mutli-user.target as it contains the After=mutli-user.target directive. Advice is given in https://github.com/canonical/cloud-init/blob/7d57fcff6d32fd706dd745315c0f8f72d94385eb/systemd/cloud-init.target#L7-L9:
> # system configuration tasks have completed. To order a service after cloud-init
> # is done, add the directives as applicable:
> # After=cloud-init.target and Wants=cloud-init.target

Following this advice will result in cyclic dependencies in systemd resolution if these directives are added to a unit which is WantedBy=multi-user.target. This is because the unit depending on and scheduled after cloud-init.target is WantedBy mutli-user.target as well which is itself ordered Before cloud-init.target. As adding new units to mutli-user.target is standard practice, this is likely to occur frequently. Related issues have been mentioned before in cloud-init bugs, for example: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1629797/comments/11; as well as other bug trackers: https://bugzilla.redhat.com/show_bug.cgi?id=1393094.

This could be resolved by either of the two:
* removing the advice that results in cyclic dependencies
* cloud-init.target depends on basic.target

Additional information

Cloud provider: any

Revision history for this message
Isabelle COWAN-BERGMAN (izzette) wrote :
Revision history for this message
James Falcon (falcojr) wrote :

That's why the statement contains the phrase "as applicable". If you have a unit that is "WantedBy=multi-user.target" then by definition, you don't want it running after cloud-init.target, so this advice isn't applicable to your use case. The advice is provided to inform a user how to order something after cloud-init has run, not how avoid all cyclic dependencies. Based on this, I'm going to set this to "Invalid", but if there's a deeper issue here that I'm not understanding, please do comment and set the status back to "New".

Changed in cloud-init:
status: New → Invalid
Revision history for this message
James Falcon (falcojr) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.