I am advised that if one wants to communicate with xenstore from cloud- init modules, one needs xe-daemon runnning, hence xe-daemon should be brought up asap.
** Description changed: [Impact] * xe-deamon.service tries to be an early boot unit; before cloud-init-local / networking is setup * However it does not declare DefaultDependencies=no, and thus tries to pull in sysinit.target which should happen after cloud-init-local; yet xe-daemon.service is declared to be before cloud-init-local, thus this is a conflict of interest. - * Either xe-deamon should declare DefaultDependencies=no, or just become a regular unit wanted by multi-user.target and the cloud-config.target + * xe-deamon should declare DefaultDependencies=no = Current unit = [Unit] Description=Xen Guest Monitoring Agent After=local-fs.target Requires=proc-xen.mount Before=network.target cloud-init.service cloud-init-local.service ConditionVirtualization=xen ConditionPathExists=/proc/xen/capabilities [Service] ExecStartPre=/usr/sbin/xe-linux-distribution /var/cache/xe-linux-distribution ExecStart=/usr/sbin/xe-daemon StandardOutput=journal+console [Install] WantedBy=multi-user.target - = Minimal fix = + = Proposed fix = --- xe-guest-utilities.xe-daemon.service.old 2017-03-03 11:45:48.679700766 +0000 +++ xe-guest-utilities.xe-daemon.service 2017-03-03 11:46:07.923549054 +0000 @@ -1,5 +1,6 @@ [Unit] Description=Xen Guest Monitoring Agent +DefaultDependencies=no After=local-fs.target Requires=proc-xen.mount Before=network.target cloud-init.service cloud-init-local.service - = Become a normal unit fix = - - --- xe-guest-utilities.xe-daemon.service.old 2017-03-03 11:45:48.679700766 +0000 - +++ xe-guest-utilities.xe-daemon.service 2017-03-03 11:47:44.842785194 +0000 - @@ -1,8 +1,6 @@ - [Unit] - Description=Xen Guest Monitoring Agent - -After=local-fs.target - -Requires=proc-xen.mount - -Before=network.target cloud-init.service cloud-init-local.service - +Before=cloud-config.target - ConditionVirtualization=xen - ConditionPathExists=/proc/xen/capabilities - - @@ -13,3 +11,4 @@ - - [Install] - WantedBy=multi-user.target - +WantedBy=cloud-config.target - == [Test Case] * Boot a cloud instance, with xen hypervisor and cloud-init metdata * There should be no boot cycles [Regression Potential] - * Depending choice of the fix, xe-daemon might be starting earlier or later. - * Some history checking is required, if xe-daemon must run before cloud-init-local or not - * Or if e.g. we only care for ExecStartPre= to run before cloud-init-local + * Minimal, currently xe-daemon.service creates dependency cycles which + prevent reliable and reproducible boots. [Other Info] * Related bug #1496730 [Dependency cycle] Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found ordering cycle on basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on sockets.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on snapd.socket/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on sysinit.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on cloud-init.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on cloud-init-local.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on xe-daemon.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Breaking ordering cycle by deleting job sockets.target/start Mar 03 12:01:15 slmeta1 systemd[1]: sockets.target: Job sockets.target/start deleted to break ordering cycle starting with basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found ordering cycle on basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on sysinit.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on cloud-init.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on cloud-init-local.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on xe-daemon.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Breaking ordering cycle by deleting job cloud-init.service/start Mar 03 12:01:15 slmeta1 systemd[1]: cloud-init.service: Job cloud-init.service/start deleted to break ordering cycle starting with basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found ordering cycle on basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on sysinit.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on cloud-init-local.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on xe-daemon.service/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Found dependency on basic.target/start Mar 03 12:01:15 slmeta1 systemd[1]: basic.target: Breaking ordering cycle by deleting job cloud-init-local.service/start Mar 03 12:01:15 slmeta1 systemd[1]: cloud-init-local.service: Job cloud-init-local.service/start deleted to break ordering cycle starting with basic.target/start -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1669755 Title: Circular boot dependency cycle with cloud-init et.al. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/xe-guest-utilities/+bug/1669755/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs