You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Vyacheslav Koptilin (JIRA)" <ji...@apache.org> on 2018/12/03 17:34:00 UTC
[jira] [Created] (IGNITE-10514) Cache validation on the primary
node may result in AssertionError
Vyacheslav Koptilin created IGNITE-10514:
--------------------------------------------
Summary: Cache validation on the primary node may result in AssertionError
Key: IGNITE-10514
URL: https://issues.apache.org/jira/browse/IGNITE-10514
Project: Ignite
Issue Type: Bug
Affects Versions: 2.8
Reporter: Vyacheslav Koptilin
Assignee: Vyacheslav Koptilin
Fix For: 2.8
Cache validation on the primary node, that was introduced by IGNITE-10413, may lead to the following AssertionError.
{code:java}
java.lang.AssertionError: GridDhtPartitionsExchangeFuture [firstDiscoEvt=DiscoveryCustomEvent [customMsg=CacheAffinityChangeMessage [...]]
at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1788)
at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1671)
at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3184)
at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:138)
at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
at org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1059)
at org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:584)
at org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:383)
at org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:309)
at org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:100)
at org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:299)
at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1568)
at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1196)
at org.apache.ignite.internal.managers.communication.GridIoManager.access$4200(GridIoManager.java:127)
at org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1092)
at org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:505)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at java.lang.Thread.run(Thread.java:748)
{code}
Let's consider the following scenario:
* Start one node and upload data.
* Start a new node (note that this step triggers rebalancing).
* Start explicit transaction and try to update atomic cache (it is assumed that atomic operation are allowed for use inside transactions, see Ignite system property DFLT_ALLOW_ATOMIC_OPS_IN_TX)
{code:java}
IgniteTransactions txs = ignite.transactions();
try (Transaction tx = txs.txStart()) {
atomicCache.put();
tx.commit();
}
{code}
Let's assume that the transaction mapped on the topology version that is related to {{NODE_JOIN}} event,
on the other hand, the corresponding request {{GridNearAtomicAbstractUpdateRequest}} can be validated on the primary node using the next top version, triggered by \{{CacheAffinityMessage}}.
That is the root cause of the {{AssertionError}} mentioned above.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)