On 2/2/22 15:51, Dumitru Ceara wrote:
> Transactions that are still incomplete (waiting for a reply from the
> server) are kept in the IDL's 'outstanding_txns' map.  When a transaction
> is destroyed, ovsdb_idl_txn_destroy() will take care of removing the
> transaction from the 'outstanding_txns' map if the transaction was
> incomplete.
> 
> When destroying the IDL loop, instead of trying to abort the
> committing_txn which would set the state to "aborted", just disassemble
> it, such that ovsdb_idl_txn_destroy() properly cleans it up.
> 
> Fixes: 53a540e5311c ("ovsdb-idl: ovsdb_idl_loop_destroy must also destroy the 
> committing txn.")
> Signed-off-by: Dumitru Ceara <[email protected]>
> ---
>  lib/ovsdb-idl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
> index 46f51a527356..9064baa88a4b 100644
> --- a/lib/ovsdb-idl.c
> +++ b/lib/ovsdb-idl.c
> @@ -4243,7 +4243,7 @@ ovsdb_idl_loop_destroy(struct ovsdb_idl_loop *loop)
>  {
>      if (loop) {
>          if (loop->committing_txn) {
> -            ovsdb_idl_txn_abort(loop->committing_txn);
> +            ovsdb_idl_txn_disassemble(loop->committing_txn);

Hmm.  Do we really need this call?  txn_destroy will remove the incomplete
transaction from the outstanding_txns and abort it, i.e. disassemble, right
after that.

>              ovsdb_idl_txn_destroy(loop->committing_txn);
>          }
>          ovsdb_idl_destroy(loop->idl);

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to