[ 
https://issues.apache.org/jira/browse/IGNITE-8375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16465916#comment-16465916
 ] 

Alexander Menshikov edited comment on IGNITE-8375 at 5/11/18 11:46 AM:
-----------------------------------------------------------------------

As I see in this method the *cacheCfg* is ** used twice:
{code:java}
if (!skipStore && (read || cctx.loadPreviousValue()) && cctx.readThrough() && 
(needReturnVal || read)) {
{code}
 # cctx.loadPreviousValue() calls *cacheCfg*.isLoadPreviousValue()
 # cctx.readThrough() calls *cacheCfg*.isReadThrough() && !skipStore()


was (Author: sharpler):
[~ascherbakov] As I see in this method the *cacheCfg* is ** used twice:
{code:java}
if (!skipStore && (read || cctx.loadPreviousValue()) && cctx.readThrough() && 
(needReturnVal || read)) {
{code}
 # cctx.loadPreviousValue() calls *cacheCfg*.isLoadPreviousValue()
 # cctx.readThrough() calls *cacheCfg*.isReadThrough() && !skipStore();

Will it be a valid solution the add *cctx.config() != null && ...* into 
condition?

> NPE due to race on cache stop and timeout handler execution.
> ------------------------------------------------------------
>
>                 Key: IGNITE-8375
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8375
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.4
>            Reporter: Alexei Scherbakov
>            Priority: Major
>             Fix For: 2.6
>
>
> {noformat}
> 2018-04-22 22:03:08.547 [INFO 
> ][Thread-25420][o.a.i.i.p.cache.GridCacheProcessor] Stopped cache 
> [cacheName=com.sbt.cdm.api.model.published.dictionary.PublishedSystem, 
> group=CACHEGROUP_DICTIONARY]
> 2018-04-22 22:03:08.548 
> [ERROR][grid-timeout-worker-#119%DPL_GRID%DplGridNodeName%][o.a.i.i.p.t.GridTimeoutProcessor]
>  Error when executing timeout callback: LockTimeoutObject []
> java.lang.NullPointerException: null
>         at 
> org.apache.ignite.internal.processors.cache.GridCacheContext.loadPreviousValue(GridCacheContext.java:1450)
>         at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture.loadMissingFromStore(GridDhtLockFuture.java:1030)
>         at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture.onComplete(GridDhtLockFuture.java:731)
>         at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture.access$900(GridDhtLockFuture.java:82)
>         at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture$LockTimeoutObject.onTimeout(GridDhtLockFuture.java:1133)
>         at 
> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$TimeoutWorker.body(GridTimeoutProcessor.java:163)
>         at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>         at java.lang.Thread.run(Thread.java:745)
> {noformat}
> NPE caused by execution of method [1] during timeout handler execution [2]:
> cacheCfg.isLoadPreviousValue() throws NPE because cacheCfg can be nulled by 
> [3] on stop.
> [1] 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture#loadMissingFromStore
> [2] 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture.LockTimeoutObject#onTimeout
> [3] org.apache.ignite.internal.processors.cache.GridCacheContext#cleanup



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

Reply via email to