forked from openvswitch/ovs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
replication: Be more careful about JSON parsing and simplify code.
The code here wasn't careful about parsing JSON received from the remote OVSDB server. It assumed, for example, that a row that the remote server implied was new was actually new, without looking to see whether there was already a row with that UUID. This commit improves this validation. It also rewrites code that translated updates locally into calls into the query engine, via JSON, into simple lookups by UUID. For me, this fixes a test failure in test 1866 (ovsdb-server/active-backup-role-switching), which caused the following valgrind report: ==18725== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==18725== Access not within mapped region at address 0x0 ==18725== at 0x43937E: ovsdb_datum_compare_3way (ovsdb-data.c:1626) ==18725== by 0x439344: ovsdb_datum_equals (ovsdb-data.c:1616) ==18725== by 0x4166CC: update_monitor_row_data (monitor.c:310) ==18725== by 0x414A90: ovsdb_monitor_changes_update (monitor.c:1255) ==18725== by 0x417009: ovsdb_monitor_change_cb (monitor.c:1339) ==18725== by 0x41DB52: ovsdb_txn_for_each_change (transaction.c:906) ==18725== by 0x416CC9: ovsdb_monitor_commit (monitor.c:1553) ==18725== by 0x41D993: ovsdb_txn_commit_ (transaction.c:868) ==18725== by 0x41D6F5: ovsdb_txn_commit (transaction.c:893) ==18725== by 0x418185: process_notification (replication.c:576) ==18725== by 0x417705: replication_run (replication.c:185) ==18725== by 0x408240: main_loop (ovsdb-server.c:198) ==18725== by 0x406432: main (ovsdb-server.c:429) I don't know the exact cause of the problem, but this new implementation leaves me more confident due to its simplicity. Reported-by: Joe Stringer <[email protected]> Reported-at: http://openvswitch.org/pipermail/dev/2016-September/079315.html Fixes: 60e0cd0 ("ovsdb: Replication usability improvements") Signed-off-by: Ben Pfaff <[email protected]> Tested-by: Joe Stringer <[email protected]> Acked-by: Andy Zhou <[email protected]>
- Loading branch information
Showing
1 changed file
with
56 additions
and
126 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters