[
https://issues.apache.org/jira/browse/IGNITE-8238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16482399#comment-16482399
]
Alexander Menshikov commented on IGNITE-8238:
---------------------------------------------
[~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)