On 2/4/22 12:14, Ilya Maximets wrote:
> 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.
> 

That's a very good point, I missed that completely, I'll send a v2.

Regards,
Dumitru

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

Reply via email to