[
https://issues.apache.org/jira/browse/IGNITE-5041?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrey Gura updated IGNITE-5041:
--------------------------------
Description:
NPE is possible during deadlock detection process in case when one of
participating cache isn't started on node that initiates transaction:
{noformat}
Exception in thread "sys-#66%transactions.TxDeadlockNpeClientTest1%"
java.lang.NullPointerException
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey.finishUnmarshal(IgniteTxKey.java:92)
at
org.apache.ignite.internal.processors.cache.transactions.TxLocksResponse.finishUnmarshal(TxLocksResponse.java:190)
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$DeadlockDetectionListener.unmarshall(IgniteTxManager.java:2588)
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$DeadlockDetectionListener.onMessage(IgniteTxManager.java:2478)
at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1082)
at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:710)
at
org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:102)
at
org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:673)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
*Steps to reproduce:*
# Start server node with two caches.
# Start two transactions on server node that involve both caches and lead to
deadlock.
# Start client node and create only one cache
# Start transaction on client node that will try to update key that involved
into deadlock
As result transaction on client node will hang until deadlock detection timeout
happens.
The same result could be achived using node filters for caches.
*Workaround:*
Start all caches on node if possible.
Another way is deadlock detection disabling using JVM parameter
{{-DIGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS=0}}
*Possible solution:*
Try to create {{CacheObjectContext}} without starting of the cache.
was:
NPE is possible during deadlock detection process in case when one of
participating cache isn't started on node that initiates transaction:
{noformat}
Exception in thread "sys-#66%transactions.TxDeadlockNpeClientTest1%"
java.lang.NullPointerException
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey.finishUnmarshal(IgniteTxKey.java:92)
at
org.apache.ignite.internal.processors.cache.transactions.TxLocksResponse.finishUnmarshal(TxLocksResponse.java:190)
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$DeadlockDetectionListener.unmarshall(IgniteTxManager.java:2588)
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$DeadlockDetectionListener.onMessage(IgniteTxManager.java:2478)
at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1082)
at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:710)
at
org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:102)
at
org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:673)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
*Steps to reproduce:*
# Start server node with two caches.
# Start two transactions on server node that involve both caches and lead to
deadlock.
# Start client node and create only one cache
# Start transaction on client node that will try to update key that involved
into deadlock
As result transaction on client node will hang until deadlock detection timeout
happens.
The same result could be achived using node filters for caches.
*Workaround:*
Start all caches on node if possible.
*Possible solution:*
Try to create {{CacheObjectContext}} without starting of the cache.
> NPE during deadlock detection because cache isn't started on node
> -----------------------------------------------------------------
>
> Key: IGNITE-5041
> URL: https://issues.apache.org/jira/browse/IGNITE-5041
> Project: Ignite
> Issue Type: Bug
> Components: cache
> Affects Versions: 1.7
> Reporter: Andrey Gura
> Assignee: Andrey Gura
>
> NPE is possible during deadlock detection process in case when one of
> participating cache isn't started on node that initiates transaction:
> {noformat}
> Exception in thread "sys-#66%transactions.TxDeadlockNpeClientTest1%"
> java.lang.NullPointerException
> at
> org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey.finishUnmarshal(IgniteTxKey.java:92)
> at
> org.apache.ignite.internal.processors.cache.transactions.TxLocksResponse.finishUnmarshal(TxLocksResponse.java:190)
> at
> org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$DeadlockDetectionListener.unmarshall(IgniteTxManager.java:2588)
> at
> org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$DeadlockDetectionListener.onMessage(IgniteTxManager.java:2478)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1082)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:710)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:102)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:673)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> {noformat}
> *Steps to reproduce:*
> # Start server node with two caches.
> # Start two transactions on server node that involve both caches and lead to
> deadlock.
> # Start client node and create only one cache
> # Start transaction on client node that will try to update key that involved
> into deadlock
> As result transaction on client node will hang until deadlock detection
> timeout happens.
> The same result could be achived using node filters for caches.
> *Workaround:*
> Start all caches on node if possible.
> Another way is deadlock detection disabling using JVM parameter
> {{-DIGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS=0}}
> *Possible solution:*
> Try to create {{CacheObjectContext}} without starting of the cache.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)