[ovs-dev] [PATCH] ovsdb-idl: Fix bad logic in ovsdb_idl_txn_commit() state transitions.
Ben Pfaff
blp at nicira.com
Sat Feb 27 08:58:59 PST 2010
You are welcome. I pushed this out.
On Fri, Feb 26, 2010 at 09:17:33PM -0800, Justin Pettit wrote:
> Looks good to me. Thanks for the quick turnaround!
>
> --Justin
>
>
> On Feb 26, 2010, at 8:36 PM, Ben Pfaff wrote:
>
> > If sending the transaction fails (jsonrpc_session_send() returns 0),
> > then we need to transition to TXN_TRY_AGAIN. (Transitioning to
> > TXN_INCOMPLETE is actually a no-op, because at this point in the code
> > we are guaranteed to be in that state already.)
> >
> > Leaving the transaction in TXN_INCOMPLETE causes a segfault later in
> > ovsdb_idl_txn_destroy() when it calls hmap_remove() on the transaction's
> > txn_node.
> >
> > This bug reveals a hole in the ovsdb_idl_txn state machine: destroying
> > a transaction without committing it or aborting it will cause the same
> > problem. This problem is *not* fixed by this patch: it really should be
> > handled by adding a new state TXN_UNCOMMITTED that indicates that the
> > transaction is not yet committed or aborted. That's too much for this
> > patch, and doesn't really matter for OVS at the moment since none of its
> > code paths destroy a transaction without committing or aborting it.
> >
> > Bug #2435.
> > ---
> > lib/ovsdb-idl.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
> > index bca8224..4826d62 100644
> > --- a/lib/ovsdb-idl.c
> > +++ b/lib/ovsdb-idl.c
> > @@ -1226,7 +1226,7 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
> > hmap_insert(&txn->idl->outstanding_txns, &txn->hmap_node,
> > json_hash(txn->request_id, 0));
> > } else {
> > - txn->status = TXN_INCOMPLETE;
> > + txn->status = TXN_TRY_AGAIN;
> > }
> >
> > ovsdb_idl_txn_disassemble(txn);
> > --
> > 1.6.6.1
> >
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
>
More information about the dev
mailing list