Skip to content

Commit

Permalink
rhel: make openvswitch service start return when ready
Browse files Browse the repository at this point in the history
In OVS 2.6 openvswitch systemd service was changed to use BindsTo
instead of Requires for sub-services but also removed them from After

This made main openvswitch service return before sub-services were ready
breaking scripts which assumed everything is ready after systemctl start
e.g. in OpenStack CI infra [1] is calling ovs-vsctl immediately after
service start exposing a race in virtualized CI environment:
2017-02-09T23:11:12.498Z|00007|bridge|INFO|ovs-vswitchd (Open vSwitch) 2.6.1
but ovs-ctl tried to access it few msec too early:
2017-02-09 23:11:12.352493 | ovs-vsctl: unix:/var/run/openvswitch/db.sock: database connection failed (No such file or directory)

Solution is to add ordering dependencies, BindsTo/Requires do not ensure it [2]

[1] https://github.com/openstack-infra/devstack-gate/blob/c435a724bd257b22a2e39e8e9125c11302a8c81d/functions.sh#L1057-L1078

[2] https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Requires=

Fixes: 84ad120 ("rhel: Improved Systemd Integration")
Signed-off-by: Alan Pevec <alan.pevec@redhat.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Russell Bryant <russell@ovn.org>
  • Loading branch information
apevec authored and russellb committed Feb 13, 2017
1 parent e6932e5 commit 273cc28
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
1 change: 1 addition & 0 deletions AUTHORS.rst
Expand Up @@ -33,6 +33,7 @@ Name Email
=============================== ===============================================
Aaron Conole aconole@redhat.com
Aaron Rosen arosen@clemson.edu
Alan Pevec alan.pevec@redhat.com
Alexander Duyck alexander.h.duyck@redhat.com
Alexandru Copot alex.mihai.c@gmail.com
Alexei Starovoitov ast@plumgrid.com
Expand Down
2 changes: 1 addition & 1 deletion rhel/usr_lib_systemd_system_openvswitch.service
@@ -1,7 +1,7 @@
[Unit]
Description=Open vSwitch
Before=network.target network.service
After=network-pre.target
After=network-pre.target ovsdb-server.service ovs-vswitchd.service
PartOf=network.target
BindsTo=ovsdb-server.service
BindsTo=ovs-vswitchd.service
Expand Down

0 comments on commit 273cc28

Please sign in to comment.