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)