ovsdb-idl: Simplify transaction retry.
authorBen Pfaff <blp@nicira.com>
Tue, 27 Mar 2012 17:16:52 +0000 (10:16 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 12 Apr 2012 15:19:01 +0000 (08:19 -0700)
commit854a94d9d20ee57b00ed8d8503e0fd945eb52301
tree7d4522137939e8b091757e44e4d16f2fce40b50f
parent6da258aa4c4552a905af36340be15dcbd42b4ab6
ovsdb-idl: Simplify transaction retry.

Originally the IDL transaction state machine had a return value
TXN_TRY_AGAIN to signal the client to wait for a change in the database and
then retry its transaction.  However, this logic was incomplete, because
it was possible for the database to change before the reply to the
transaction RPC was received, in which case the client would wait for a
further change.  Commit 4fdfe5ccf84c (ovsdb-idl: Prevent occasional hang
when multiple database clients race.) fixed the problem by breaking
TXN_TRY_AGAIN into two status codes, TXN_AGAIN_WAIT that meant to wait for
a further change and TXN_AGAIN_NOW that meant that a change had already
occurred so try again immediately.

This is correct enough, but it is more complicated than necessary.  It is
simpler and just as correct to use a single "try again" status that
requires the client to wait for a change relative to the database contents
*before* the transaction was committed.  This commit makes that change.
It also changes ovsdb_idl_run()'s return type from bool to void because
its return type is hardly useful anymore.

Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/ovsdb-idl.c
lib/ovsdb-idl.h
python/ovs/db/idl.py
tests/test-ovsdb.c
utilities/ovs-vsctl.c
vswitchd/bridge.c