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

Andrew Mashenkov commented on IGNITE-8238:
------------------------------------------

[~sharpler],
 # Yes, we should throw smth meaningfull.
 # "unwindEvicts" is called after almost all user cache operation in user 
thread. Any thrown exception here will confuse user as it can't distinct 
whether his operation was successful or not. So, we shouldn't throw any 
exception after user operation was finished. As unwindEvicts() doesn't relates 
to user operation itself, it designed just to help ignite to free memory with 
using user thread.
 # I'd suppress any Exception from unwindEvict() calls after user operation has 
been finished, bud log it for debug level. 
 # TtlManager log only checked Exception and it look ok as 
SharedTtlCleanerManager has a code to handle Interrupt exception. Seems, 
Interrupt exceptions can be suppressed in TtlManager and this should be fixed 
as well.

Seems, it is better to discuss it on dev list how to (and where) properly 
handle\suppress\rethrow exception from unwindEvicts.

> Operation can fails with unexpected RuntimeException when node is stopping.
> ---------------------------------------------------------------------------
>
>                 Key: IGNITE-8238
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8238
>             Project: Ignite
>          Issue Type: Bug
>          Components: general
>            Reporter: Andrew Mashenkov
>            Assignee: Alexander Menshikov
>            Priority: Minor
>             Fix For: 2.6
>
>
> Operation can fails with RuntimeException when node is stoped in other 
> thread. 
> It is not clear from javadoc that operation can throws RuntimeException.
>  We should add it to javadoc or e.g. throws IllegalStateException which 
> already present in java cache api javadoc.
> Failure in thread: Thread [id=3484, name=updater-2]
> java.lang.RuntimeException: Failed to perform cache update: node is stopping.
>  at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.checkpointReadLock(GridCacheDatabaseSharedManager.java:1350)
>  at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.purgeExpired(GridCacheOffheapManager.java:1685)
>  at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager.expire(GridCacheOffheapManager.java:796)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheTtlManager.expire(GridCacheTtlManager.java:197)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheUtils.unwindEvicts(GridCacheUtils.java:834)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheGateway.leaveNoLock(GridCacheGateway.java:240)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheGateway.leave(GridCacheGateway.java:225)
>  at 
> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.onLeave(GatewayProtectedCacheProxy.java:1708)
>  at 
> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.putAll(GatewayProtectedCacheProxy.java:945)
>  at 
> org.apache.ignite.internal.processors.cache.persistence.IgnitePdsContinuousRestartTest$1.call(IgnitePdsContinuousRestartTest.java:261)
>  at org.apache.ignite.testframework.GridTestThread.run(GridTestThread.java:86)



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

Reply via email to