[ 
https://issues.apache.org/jira/browse/IGNITE-6815?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitriy Pavlov updated IGNITE-6815:
-----------------------------------
    Fix Version/s:     (was: 2.4)
                       (was: 2.3)
                       (was: 2.2)
                   2.5

> "Unexpected exception during cache update" via NullPointerException thrown 
> using TouchedExpiryPolicy
> ----------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-6815
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6815
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache, streaming
>    Affects Versions: 2.2, 2.3, 2.4
>         Environment: 4.10.0-33-generic #37~16.04.1-Ubuntu SMP Fri Aug 11 
> 14:07:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
> Distributor ID:       LinuxMint
> Description:  Linux Mint 18.2 Sonya
> Release:      18.2
> Codename:     sonya
>            Reporter: Reed Sandberg
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.5
>
>
> This is triggered when I apply an expiry on the cache during an import with 
> StreamLoader, with no expiry on the cache, the import runs fine.
> Somehow the following line of code is hit with val == null:
> org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java:1253
> Stack trace (version 2.3.0 release package from maven public repo):
> {noformat}
> 16:04:25.259 ERROR o.a.i.i.p.c.d.d.a.GridDhtAtomicCache - <devid-dbid-map> 
> Unexpected exception during cache update
> org.apache.ignite.IgniteException: Runtime failure on search row: 
> org.apache.ignite.internal.processors.cache.tree.SearchRow@68a4e885
>       at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1632)
>       at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1201)
>       at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:343)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:1693)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2419)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:1882)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1735)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1627)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.sendSingleRequest(GridNearAtomicAbstractUpdateFuture.java:299)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:483)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:443)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:248)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1116)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.invoke0(GridDhtAtomicCache.java:825)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.invoke(GridDhtAtomicCache.java:783)
>       at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.invoke(IgniteCacheProxyImpl.java:1338)
>       at 
> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.invoke(GatewayProtectedCacheProxy.java:1320)
>       at 
> org.apache.ignite.stream.StreamTransformer.receive(StreamTransformer.java:45)
>       at 
> org.apache.ignite.internal.processors.datastreamer.DataStreamerUpdateJob.call(DataStreamerUpdateJob.java:137)
>       at 
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6631)
>       at 
> org.apache.ignite.internal.processors.closure.GridClosureProcessor$2.body(GridClosureProcessor.java:967)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>       at 
> org.apache.ignite.internal.util.StripedExecutor$Stripe.run(StripedExecutor.java:505)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.NullPointerException: null
>       at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.createRow(IgniteCacheOffheapManagerImpl.java:1253)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.initResultOnCancelUpdate(GridCacheMapEntry.java:4267)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:4154)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:3918)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:2988)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$6200(BPlusTree.java:2882)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:1719)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1602)
>       ... 23 common frames omitted
> {noformat}
> The NPE seems to be triggered only when applying a TTL to the cache:
> {noformat}
>         CacheConfiguration<DeviceId, DeviceIdCacheEntry> ccDevidCache =
>                 new CacheConfiguration<>();
>         ccDevidCache = 
> ccDevidCache.setExpiryPolicyFactory(FactoryBuilder.factoryOf(
>                 new TouchedExpiryPolicy(new Duration(DAYS, GRAPH_CACHE_TTL))))
>                 .setEagerTtl(true)
>                 .setName("devid-dbid-map");
>         ignite.getOrCreateCache(ccDevidCache);
> {noformat}
> However it works fine with a 'plain' cache config:
> {noformat}
> ignite.createCache("devid-dbid-map");
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to