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

Reply via email to