[ovs-build] Passed: dceara/ovs#105 (review-pws247768-ovsdb-idl-signaling - ceb3b85)
Travis CI
builds at travis-ci.org
Thu Jun 10 11:06:43 UTC 2021
Build Update for dceara/ovs
-------------------------------------
Build: #105
Status: Passed
Duration: 14 mins and 41 secs
Commit: ceb3b85 (review-pws247768-ovsdb-idl-signaling)
Author: Ilya Maximets
Message: ovsdb-idl: Fix the database update signaling if it has never been connected.
The symptom of this issue is that OVS bridge looses its IP address on
restart.
Simple reproducer:
0. start ovsdb-server and ovs-vswitchd
1. ovs-vsctl add-br br0
2. ifconfig br0 10.0.0.1 up
3. ovs-appctl -t ovs-vswitchd exit
4. start ovs-vswitchd back.
After step #3 ovs-vswitchd is down, but br0 interface exists and
has configured IP address. After step #4 there is no IP address
on the port br0.
What happened:
1. ovsdb-cs connects to the database via ovsdb-idl and requests
database lock.
--> get_schema for _Server database
--> lock request
2. ovsdb-cs receives schema for the _Server database. And sends
monitor request.
<-- schema for _Server
--> monitor_cond for _Server
3. ovsdb-cs receives lock reply.
<-- locked
At this point ovsdb-cs generates OVSDB_CS_EVENT_TYPE_LOCKED
event and passes it to ovsdb-idl. ovsdb-idl increases change_seqno.
4. ovsdb_idl_has_ever_connected() is 'true' now, because change_seqno
is not zero.
5. ovs-vswitchd decides that it has connection with database and
all the initial data, therefore initiates configuration of bridges.
bridge_run():ovsdb_idl_has_ever_connected() --> true
6. Since monitor request for the Open_vSwitch database is not even
sent yet, the database is empty. This leads to removal of all the
ports and all other resources.
7. When data finally received, ovs-vswitchd re-creates bridges and
ports, but IP addresses can not be restored.
While splitting out ovsdb-cs from ovsdb-idl one part of the logic
was lost. Particularly, before the split, ovsdb-idl updated
change_seqno only in MONITORING state.
Restoring the logic by updating the change_seqno only if may send
transaction, i.e. lock is ours and ovsdb-cs is in the MONITORING
state. This matches with the main purpose of increasing change_seqno
at this point, i.e. to force the client to re-try the transaction.
With this change ovsdb_idl_has_ever_connected() remains 'false'
until the first monitor reply with the actual data received.
This issue was reported several times during the last couple of weeks.
Reported-at: https://bugzilla.redhat.com/1968445
Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2021-June/383512.html
Reported-at: https://mail.openvswitch.org/pipermail/ovs-discuss/2021-June/051222.html
Fixes: 1c337c43ac1c ("ovsdb-idl: Break into two layers.")
Signed-off-by: Ilya Maximets <i.maximets at ovn.org>
View the changeset: https://github.com/dceara/ovs/compare/610ac1e82c59^...ceb3b85222b2
View the full build log and details: https://travis-ci.org/github/dceara/ovs/builds/774129914?utm_medium=notification&utm_source=email
--
You can unsubscribe from build emails from the dceara/ovs repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=25057358&utm_medium=notification&utm_source=email.
Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email.
Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-build/attachments/20210610/f93c5296/attachment.html>
More information about the build
mailing list