IGNITE-9267 Fixed deadlock between unsuccessfull client reconnect and stop - Fixes #4552.
Signed-off-by: Alexey Goncharuk <alexey.goncha...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ca80acba Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ca80acba Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ca80acba Branch: refs/heads/ignite-9273 Commit: ca80acbaed6cf03814a95df712c39cc976f14ed3 Parents: 9fdf95a Author: Vitaliy Biryukov <biryukovvitali...@gmail.com> Authored: Mon Aug 27 15:53:09 2018 +0300 Committer: Alexey Goncharuk <alexey.goncha...@gmail.com> Committed: Mon Aug 27 15:53:09 2018 +0300 ---------------------------------------------------------------------- .../src/main/java/org/apache/ignite/internal/IgniteKernal.java | 6 ++++-- .../internal/managers/discovery/GridDiscoveryManager.java | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ca80acba/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java index a089d67..eef2140 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java @@ -3868,7 +3868,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { } catch (IgniteCheckedException e) { if (!X.hasCause(e, IgniteNeedReconnectException.class, - IgniteClientDisconnectedCheckedException.class)) { + IgniteClientDisconnectedCheckedException.class, + IgniteInterruptedCheckedException.class)) { U.error(log, "Failed to reconnect, will stop node.", e); reconnectState.firstReconnectFut.onDone(e); @@ -3901,7 +3902,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { if (err != null) { U.error(log, "Failed to reconnect, will stop node", err); - close(); + if (!X.hasCause(err, NodeStoppingException.class)) + close(); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/ca80acba/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java index 2fbeda9..a13f31e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java @@ -71,6 +71,7 @@ import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.IgniteClientDisconnectedCheckedException; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.IgniteKernal; +import org.apache.ignite.internal.NodeStoppingException; import org.apache.ignite.internal.cluster.NodeOrderComparator; import org.apache.ignite.internal.events.DiscoveryCustomEvent; import org.apache.ignite.internal.managers.GridManagerAdapter; @@ -1663,7 +1664,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { } if (!locJoin.isDone()) - locJoin.onDone(new IgniteCheckedException("Failed to wait for local node joined event (grid is stopping).")); + locJoin.onDone(new NodeStoppingException("Failed to wait for local node joined event (grid is stopping).")); } /** {@inheritDoc} */