ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ALEKSEY KUZNETSOV <alkuznetsov...@gmail.com>
Subject Re: cache operation failed after transaction rolled back due to deadlock
Date Tue, 23 Jan 2018 07:14:38 GMT

created ticket with reproducer [1] 

I think the fix should be to clear context in tx.close()

[1] https://issues.apache.org/jira/browse/IGNITE-7486

> 23 янв. 2018 г., в 1:56, Yakov Zhdanov <yzhdanov@apache.org> написал(а):
> 
> Guys, can you check if you call tx.close(); or properly use
> try-with-resources construct?
> 
> Tx context should not be cleared automatically otherwise user would not get
> any notification that original transaction failed. I believe context should
> be cleared on tx.close().
> 
> Anyway, let's take a look at reproducer from Alexey first.
> 
> --Yakov
> 
> 2018-01-22 2:02 GMT-08:00 ALEKSEY KUZNETSOV <alkuznetsov.sb@gmail.com>:
> 
>> Sure
>> 
>> пн, 22 янв. 2018 г. в 12:25, Andrey Gura <agura@apache.org>:
>> 
>>> It seems that problem isn't related with deadlock detection and should be
>>> reproducible when deadlock detection disabled.
>>> 
>>> Anyway it sounds like a bug. Could you please file a ticket and provide
>>> minimal reproducer?
>>> 
>>> 19 янв. 2018 г. 3:55 PM пользователь "ALEKSEY KUZNETSOV" <
>>> alkuznetsov.sb@gmail.com> написал:
>>> 
>>>> Hi, Igntrs!
>>>> 
>>>> 
>>>> 
>>>> When you have your transaction rolled back due to detected deadlock,
>> you
>>>> are unabled to perform cache operations (in thread where tx was started
>>> and
>>>> rolled back), because it leads to TransactionTimeoutException.
>>>> 
>>>> 
>>>> 
>>>> The reason of such behavior is that tx thread map (txManager#threadMap)
>>> was
>>>> not cleared from tx when roll back occured.
>>>> 
>>>> In GridNearTxLocal#onTimeout you can find comment on that :
>>>> 
>>>> *// Note: if rollback asynchronously on timeout should not clear thread
>>>> map*
>>>> 
>>>> *// since thread started tx still should be able to see this tx.*
>>>> 
>>>> Cache operation picks up tx from that map and throws exception.
>>>> 
>>>> 
>>>> 
>>>> So, one must create new thread in order to perform cache operations?
>>>> 
>>>> 
>>>> --
>>>> 
>>>> *Best Regards,*
>>>> 
>>>> *Kuznetsov Aleksey*
>>>> 
>>> 
>> 
>> 
>> --
>> 
>> *Best Regards,*
>> 
>> *Kuznetsov Aleksey*
>> 

Mime
  • Unnamed multipart/alternative (inline, 7-Bit, 0 bytes)
View raw message