Andrey, thanks for additional details. The doc is updated
https://apacheignite.readme.io/docs/transactions#deadlock-detection-in-pessimistic-transactions
 
<https://apacheignite.readme.io/docs/transactions#deadlock-detection-in-pessimistic-transactions>

—
Denis

> On May 23, 2016, at 2:28 PM, Andrey Gura <ag...@gridgain.com> wrote:
> 
> Dmitry,
> 
> In this case "blocked" means that transaction can't be rolled back while
> deadlock detection isn't completed. As soon as detection completes
> transaction can be rolled back and, for example, retried.
> 
> So in cases when deadlock detection is switched off transactions will be
> just rolled back immediately with TransactionTimeoutException, while with
> deadlock detection they will be blocked during deadlock detection procedure
> execution.
> 
> On Mon, May 23, 2016 at 12:30 AM, Dmitriy Setrakyan <dsetrak...@apache.org>
> wrote:
> 
>> Andrey,
>> 
>> Can you tell me what transaction is being blocked? If it is the transaction
>> in deadlock, then I think it should not matter, as it is blocked anyway.
>> 
>> D.
>> 
>> On Sun, May 22, 2016 at 2:11 PM, Andrey Gura <ag...@gridgain.com> wrote:
>> 
>>> Dmitry,
>>> 
>>> Do you think that we should configure deadlock detection using cache
>>> configuration?
>>> 
>>> User should have possibility to have control over this process because it
>>> blocks transaction until detection completion.
>>> 
>>> You are right. Deadlock detection starts after transaction timeout and
>>> lists transactions and keys involved into deadlock in exception message.
>>> 
>>> 
>>> On Fri, May 20, 2016 at 3:16 AM, Dmitriy Setrakyan <
>> dsetrak...@apache.org>
>>> wrote:
>>> 
>>>> Andrey,
>>>> 
>>>> Why are we using system properties for the deadlock detection
>>>> configuration? Also, why would a user want to interrupt the deadlock
>>>> detection process?
>>>> 
>>>> To my knowledge, the deadlock detection process should run after
>>>> transaction has timed out and should include the deadlocked keys into
>> the
>>>> timeout exception message. Am I wrong?
>>>> 
>>>> D.
>>>> 
>>>> On Wed, May 18, 2016 at 9:38 AM, Andrey Gura <ag...@gridgain.com>
>> wrote:
>>>> 
>>>>> Deadlock detection is multi step procedure where steps amount depends
>>> on
>>>>> amount of nodes in cluster, keys and transactions that involved into
>>>>> deadlock. Deadlock detection initiator is a node on whicn transaction
>>> was
>>>>> started and timeouted. So this node tries to untangle deadlock step
>> by
>>>> step
>>>>> where each step it is usually request to remote node. So onle
>>>>> request/response cycle is an iteration.
>>>>> 
>>>>> Amount of keys, transactions and nodes may be too big. Moreover,
>>>>> transaction timeout does not mean that deadlock actually exists. So
>>> user
>>>>> can limit amount of iterations that deadlock detection performs using
>>>>> IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS system property. User also can
>>>>> switch off deadlock detection using non positive value for this
>>> property.
>>>>> 
>>>>> IGNITE_TX_DEADLOCK_DETECTION_TIMEOUT allows to inerrupt deadlock
>>>> detection
>>>>> process after specified amount of time. It is another way to limit
>> time
>>>> of
>>>>> execution of deadlock detection process.
>>>>> 
>>>>> 
>>>>> 
>>>>> On Tue, May 17, 2016 at 10:51 AM, Denis Magda <dma...@gridgain.com>
>>>> wrote:
>>>>> 
>>>>>> Andrey, perfect! Thanks a lot for the explanation.
>>>>>> 
>>>>>> I’ve created a documentation for this functionality and added it to
>>> 1.6
>>>>>> version of readme.io
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> http://apacheignite.gridgain.org/v1.6/docs/transactions#deadlock-detection-in-pessimistic-transactions
>>>>>> 
>>>>>> Please feel free to improve it if needed.
>>>>>> 
>>>>>> However, I would add more technical details on how the deadlock
>>>> detection
>>>>>> procedure works because presently it’s not clear why user need to
>>>> modify
>>>>>> these properties - IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS and
>>>>>> IGNITE_TX_DEADLOCK_DETECTION_TIMEOUT.
>>>>>> 
>>>>>> Could you elaborate on the procedure more technically so that its
>>> clear
>>>>>> why these properties are needed?
>>>>>> 
>>>>>> —
>>>>>> Denis
>>>>>> 
>>>>>> On May 16, 2016, at 3:47 PM, Andrey Gura <ag...@gridgain.com>
>> wrote:
>>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> There is no example how to use it. It just works :)
>>>>>> 
>>>>>> For now deadlock detection supported only by pessimistic
>> transactions
>>>>> with
>>>>>> timeout. Near cache isn't supported.
>>>>>> 
>>>>>> User should just start some pessimistic transactions with timeout
>> and
>>>> if
>>>>>> timeout expired then deadlock detection will try to find deadlock.
>>>>>> TransactionTimeoutException will be thrown and returned to user as
>>>> cause
>>>>>> of CacheException regardless of deadlock. But if deadlock detected
>>> then
>>>>>> cause of this TransactionTimeoutException will be
>>>>>> TransactionDeadlockException (at least for one transaction involved
>>>> into
>>>>>> deadlock). TransactionDeadlockException contains message like this:
>>>>>> 
>>>>>> Deadlock detected:
>>>>>> 
>>>>>> K1: TX1 holds lock, TX2 waits lock.
>>>>>> K2: TX2 holds lock, TX1 waits lock.
>>>>>> 
>>>>>> Transactions:
>>>>>> 
>>>>>> TX1 [txId=GridCacheVersion [topVer=74882201, time=1463402200675,
>>>>>> order=1463402198603, nodeOrder=1],
>>>>>> nodeId=46ef3b0a-dd48-434d-8151-d1af778fe180, threadId=77]
>>>>>> TX2 [txId=GridCacheVersion [topVer=74882201, time=1463402200675,
>>>>>> order=1463402198604, nodeOrder=1],
>>>>>> nodeId=46ef3b0a-dd48-434d-8151-d1af778fe180, threadId=78]
>>>>>> 
>>>>>> Keys:
>>>>>> 
>>>>>> K1 [key=1, cache=default]
>>>>>> K2 [key=2, cache=default]
>>>>>> 
>>>>>> I've created simple code example that creates deadlock and
>>> demonstrates
>>>>>> result of deadlock detection [1].
>>>>>> 
>>>>>> There are a couple of system properties that allows manage deadlock
>>>>>> detection: IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS and
>>>>>> IGNITE_TX_DEADLOCK_DETECTION_TIMEOUT. See IgniteSystemProperties
>>> class
>>>>> for
>>>>>> props javadocs.
>>>>>> 
>>>>>> [1] https://gist.github.com/agura/1e633b473188738aa3df7e1c6f9cc472
>>>>>> 
>>>>>> 
>>>>>> On Fri, May 13, 2016 at 3:04 PM, Denis Magda <dma...@gridgain.com>
>>>>> wrote:
>>>>>> 
>>>>>>> Andrey,
>>>>>>> 
>>>>>>> As I see you’ve implemented a deadlock detection mechanism
>> recently
>>>>>>> https://issues.apache.org/jira/browse/IGNITE-2854
>>>>>>> 
>>>>>>> Could you provide a basic example showing how to use it? I would
>>> like
>>>> to
>>>>>>> add the example and some words on the feature to readme. io so
>> that
>>>> the
>>>>>>> communicate can leverage from this.
>>>>>>> 
>>>>>>> —
>>>>>>> Denis
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> Andrey Gura
>>>>>> GridGain Systems, Inc.
>>>>>> www.gridgain.com
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> Andrey Gura
>>>>> GridGain Systems, Inc.
>>>>> www.gridgain.com
>>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> Andrey Gura
>>> GridGain Systems, Inc.
>>> www.gridgain.com
>>> 
>> 
> 
> 
> 
> -- 
> Andrey Gura
> GridGain Systems, Inc.
> www.gridgain.com

Reply via email to