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://readme.io/>
http://apacheignite.gridgain.org/v1.6/docs/transactions#deadlock-detection-in-pessimistic-transactions
 
<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 
> <https://gist.github.com/agura/1e633b473188738aa3df7e1c6f9cc472>
> 
> 
> On Fri, May 13, 2016 at 3:04 PM, Denis Magda <dma...@gridgain.com 
> <mailto:dma...@gridgain.com>> wrote:
> Andrey,
> 
> As I see you’ve implemented a deadlock detection mechanism recently
> https://issues.apache.org/jira/browse/IGNITE-2854 
> <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 <http://www.gridgain.com/>

Reply via email to