IGNITE-8238 Fix for Operation can fails with unexpected RuntimeException when node is stopping. - Fixes #3993.
Signed-off-by: Dmitriy Pavlov <dpav...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/21cd24c6 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/21cd24c6 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/21cd24c6 Branch: refs/heads/ignite-8446 Commit: 21cd24c6f08d957669953dd6aa01c670680bb7f9 Parents: f427b9d Author: Alexander Menshikov <sharple...@gmail.com> Authored: Fri Jun 22 21:34:26 2018 +0300 Committer: Dmitriy Pavlov <dpav...@apache.org> Committed: Fri Jun 22 21:34:26 2018 +0300 ---------------------------------------------------------------------- .../internal/processors/cache/GridCacheTtlManager.java | 9 +++++++++ .../cache/persistence/GridCacheDatabaseSharedManager.java | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/21cd24c6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheTtlManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheTtlManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheTtlManager.java index d36485a..ff6ed65 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheTtlManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheTtlManager.java @@ -21,6 +21,7 @@ import java.util.concurrent.atomic.LongAdder; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteException; import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.internal.NodeStoppingException; import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheAdapter; import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheEntry; import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; @@ -214,6 +215,14 @@ public class GridCacheTtlManager extends GridCacheManagerAdapter { catch (IgniteCheckedException e) { U.error(log, "Failed to process entry expiration: " + e, e); } + catch (IgniteException e) { + if (e.hasCause(NodeStoppingException.class)) { + if (log.isDebugEnabled()) + log.debug("Failed to expire because node is stopped: " + e); + } + else + throw e; + } return false; } http://git-wip-us.apache.org/repos/asf/ignite/blob/21cd24c6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java index d12dc9d..9892b8c 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java @@ -1460,6 +1460,7 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan /** * Gets the checkpoint read lock. While this lock is held, checkpoint thread will not acquireSnapshotWorker memory * state. + * @throws IgniteException If failed. */ @SuppressWarnings("LockAcquiredButNotSafelyReleased") @Override public void checkpointReadLock() { @@ -1472,7 +1473,7 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan if (stopping) { checkpointLock.readLock().unlock(); - throw new RuntimeException("Failed to perform cache update: node is stopping."); + throw new IgniteException(new NodeStoppingException("Failed to perform cache update: node is stopping.")); } if (safeToUpdatePageMemories() || checkpointLock.getReadHoldCount() > 1)