systemd dependency loop

Bug #1643751 reported by Scott Moser
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gce-utils (Ubuntu)
Expired
High
Unassigned
Nominated for Xenial by Scott Moser

Bug Description

while testing cloud-init in -proposed for bug 1629797
I found that the changes to cloud-init create a dependency loop for
 google-startup-scripts.service"

I'll attach journalctl output.

I think related is
 https://code.launchpad.net/~philroche/ubuntu/+source/gce-compute-image-packages/+git/gce-compute-image-packages/+merge/311153

The change here seems to me to resolve the issue, and should be safe with new or older cloud-init as cloud-init.target is present everywhere.
Summary is that we just drop 'Wants' of cloud-final.service.
I'm not sure why google-startup-scripts.service would want to make cloud-final.service start. After should be sufficient.

$ diff -u /lib/systemd/system/google-startup-scripts.service.dist /lib/systemd/system/google-startup-scripts.service
--- /lib/systemd/system/google-startup-scripts.service.dist 2016-11-22 03:32:02.385676527 +0000
+++ /lib/systemd/system/google-startup-scripts.service 2016-11-22 03:50:43.139227057 +0000
@@ -3,7 +3,7 @@
 After=local-fs.target network-online.target network.target
 After=google.service rsyslog.service cloud-final.service
 After=multi-user.target
-Wants=local-fs.target network-online.target network.target cloud-final.service
+Wants=local-fs.target network-online.target network.target

 [Service]
 ExecStart=/usr/share/google/run-startup-scripts

Related bugs:
 * bug 1627436: Startup scripts do not run on 1604 images

Revision history for this message
Scott Moser (smoser) wrote :
Revision history for this message
Scott Moser (smoser) wrote :
Revision history for this message
Scott Moser (smoser) wrote :

for easier reference, the dependency loop info is:
Nov 22 02:43:11.473124 smfoo2 systemd[1]: cloud-final.service: Found ordering cycle on cloud-final.service/start
Nov 22 02:43:11.473131 smfoo2 systemd[1]: cloud-final.service: Found dependency on multi-user.target/start
Nov 22 02:43:11.473138 smfoo2 systemd[1]: cloud-final.service: Found dependency on google-startup-scripts.service/start
Nov 22 02:43:11.473145 smfoo2 systemd[1]: cloud-final.service: Found dependency on cloud-final.service/start
Nov 22 02:43:11.473152 smfoo2 systemd[1]: cloud-final.service: Breaking ordering cycle by deleting job google-startup-scripts.service/start
Nov 22 02:43:11.473159 smfoo2 systemd[1]: google-startup-scripts.service: Job google-startup-scripts.service/start deleted to break ordering cycle starting with cloud-final.service/start

description: updated
Revision history for this message
Scott Moser (smoser) wrote :

I looked at gce-compute-image-packages_20160930-0ubuntu2 and it's google-startup-scripts.service is simpler, with no references to cloud-init at all, only:

After=local-fs.target network-online.target network.target rsyslog.service
After=google-instance-setup.service google-network-setup.service
Wants=local-fs.target network-online.target network.target

So it seems likely fine to drop the Wants on cloud-final.service (or even other pieces...)

no longer affects: gce-compute-image-packages (Ubuntu)
Changed in gce-utils (Ubuntu):
status: New → Confirmed
importance: Undecided → High
Revision history for this message
Scott Moser (smoser) wrote :

I've now marked this incomplete.
I believe it was seen as a result of running a much older image (/ubuntu-os-cloud/ubuntu-1604-xenial-v20160627) and not having updated it, but just adding -proposed and installing cloud-init.

I've ssince tested with a newer image (ubuntu-1604-xenial-v20161115) and not seen this issue.

After installation of cloud-init from proposed we can do

journalctl --full -o --no-pager
$ journalctl --full --no-pager | grep "ordering" || echo no ordering
no ordering

$ journalctl --full --no-pager | grep -i "break" || echo no breakno break

Changed in gce-utils (Ubuntu):
status: Confirmed → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for gce-utils (Ubuntu) because there has been no activity for 60 days.]

Changed in gce-utils (Ubuntu):
status: Incomplete → Expired
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.