[ https://issues.apache.org/jira/browse/IGNITE-8238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16482399#comment-16482399 ]
Alexander Menshikov edited comment on IGNITE-8238 at 5/21/18 4:22 PM: ---------------------------------------------------------------------- [~amashenkov] I'm sorry but I don't understand the question. If you are asking why I didn't do it, the answer is: there isn't anything about such approach in issue description or in your comments. In the previous comment you have written: {quote}<...> This behavior isn't mentioned in javadoc. <...> I think we shouldn't use RuntimeException class directly, but throws smth meaningful either IgniteException or IllegalStateException. {quote} So I have chosen IllegalStateException and added information in Javadoc. That's it. If you want I can rework PR with the new approach. But please specify for me some details: # Do you want to throw NodeStoppingException (which is checked) wrapped into IgniteException from #checkpointReadLock()*?* # Do you interesting only an exception from GridCacheUtils#unwindEvicts *?* I mean checkpointReadLock are called in 81 places in the project, so there is no pipeline as checkpointReadLock -> unwindEvicts. # Do you want to catch IgniteException with NodeStoppingException cause in GridCacheTtlManager#expire (GridCacheUtils#unwindEvicts call it)*?* Now it catches only IgniteCheckedException. # When you are writing "Ignored" do you mean "logged"*?* Now GridCacheTtlManager#expire is logging exception with error level – is this a fine behaver? Maybe my questions look as over-detailed, but I don't want to misunderstand you twice in one PR:) was (Author: sharpler): [~amashenkov] I'm sorry but I don't understand the question. If you are asking why I didn't do it, the answer is: there isn't anything about such approach in issue description or in your comments. In the previous comment you have written: {quote}<...> This behavior isn't mentioned in javadoc. <...> I think we shouldn't use RuntimeException class directly, but throws smth meaningful either IgniteException or IllegalStateException. {quote} So I have chosen IllegalStateException and added information in Javadoc. That's it. If you want I can rework PR with the new approach. But please specify for me some details: # Do you want to throw NodeStopp*ing*Exception (which is checked) wrapped into IgniteException from #checkpointReadLock()*?* # Do you interesting only an exception from GridCacheUtils#unwindEvicts*?* I mean checkpointReadLock are called in 81 places in the project, so there is no pipeline as checkpointReadLock -> unwindEvicts. # Do you want to catch IgniteException with NodeStoppingException cause in GridCacheTtlManager#expire (GridCacheUtils#unwindEvicts call it)*?* Now it catches only IgniteCheckedException. # When you are writing "Ignored" do you mean "logged"*?* Now GridCacheTtlManager#expire is logging exception with error level – is this a fine behaver? Maybe my questions look as over-detailed, but I don't want to misunderstand you twice in one PR:) > 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)