mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 01:51:26 +00:00
ovsdb-server: drop all connections on read/write status change
Prior to this patch, only db change aware connections were dropped on a read/write status change. However, current schema in OVN does not allow clients to monitor whether a particular DB changes this status. In order to accomplish this, we'd need to change the schema and adapting ovsdb-server and existing clients. Before tackling that, this patch is changing ovsdb-server to drop *all* the existing connections upon a read/write status change. This will force clients to reconnect and honor the change. Reported-at: https://mail.openvswitch.org/pipermail/ovs-discuss/2019-July/048981.html Signed-off-by: Daniel Alvarez <dalvarez@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
parent
183b5bba43
commit
2a9679e3b2
@ -365,7 +365,7 @@ ovsdb_jsonrpc_server_set_read_only(struct ovsdb_jsonrpc_server *svr,
|
||||
{
|
||||
if (svr->read_only != read_only) {
|
||||
svr->read_only = read_only;
|
||||
ovsdb_jsonrpc_server_reconnect(svr, false,
|
||||
ovsdb_jsonrpc_server_reconnect(svr, true,
|
||||
xstrdup(read_only
|
||||
? "making server read-only"
|
||||
: "making server read/write"));
|
||||
|
21
tests/ovn.at
21
tests/ovn.at
@ -14313,3 +14313,24 @@ OVN_CHECK_PACKETS([hv2/vif22-tx.pcap], [vif22.expected])
|
||||
OVN_CLEANUP([hv1],[hv2])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
# Run ovn-nbctl in daemon mode, change to a backup database and verify that
|
||||
# an insert operation is not allowed.
|
||||
AT_SETUP([ovn -- can't write to a backup database server instance])
|
||||
ovn_start
|
||||
on_exit 'kill $(cat ovn-nbctl.pid)'
|
||||
export OVN_NB_DAEMON=$(ovn-nbctl --pidfile --detach)
|
||||
|
||||
AT_CHECK([ovn-nbctl ls-add sw0])
|
||||
as ovn-nb
|
||||
AT_CHECK([ovs-appctl -t ovsdb-server ovsdb-server/sync-status | grep active | wc -l], [0], [1
|
||||
])
|
||||
ovs-appctl -t ovsdb-server ovsdb-server/set-active-ovsdb-server tcp:192.0.2.2:6641
|
||||
ovs-appctl -t ovsdb-server ovsdb-server/connect-active-ovsdb-server
|
||||
AT_CHECK([ovs-appctl -t ovsdb-server ovsdb-server/sync-status | grep -c backup], [0], [1
|
||||
])
|
||||
AT_CHECK([ovn-nbctl ls-add sw1], [1], [ignore],
|
||||
[ovn-nbctl: transaction error: {"details":"insert operation not allowed when database server is in read only mode","error":"not allowed"}
|
||||
])
|
||||
|
||||
AT_CLEANUP
|
||||
|
Loading…
x
Reference in New Issue
Block a user