Repository: incubator-ignite Updated Branches: refs/heads/ignite-901 0a81239de -> 256fa115d
# ignite-901 Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/256fa115 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/256fa115 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/256fa115 Branch: refs/heads/ignite-901 Commit: 256fa115dcbbe9f571fd4e76d4de2e0b7867ca92 Parents: 0a81239 Author: sboikov <sboi...@gridgain.com> Authored: Tue Jul 14 13:54:30 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Tue Jul 14 13:54:30 2015 +0300 ---------------------------------------------------------------------- .../ignite/spi/discovery/tcp/ServerImpl.java | 58 +++++++++++--------- 1 file changed, 33 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/256fa115/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java index 39dbd68..0003486 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java @@ -1595,39 +1595,47 @@ class ServerImpl extends TcpDiscoveryImpl { // Addresses registered in IP finder. Collection<InetSocketAddress> regAddrs = spi.registeredAddresses(); - // Remove all addresses that belong to alive nodes, leave dead-node addresses. - Collection<InetSocketAddress> rmvAddrs = F.view( - regAddrs, - F.notContains(currAddrs), - new P1<InetSocketAddress>() { - private final Map<InetSocketAddress, Boolean> pingResMap = new HashMap<>(); + P1<InetSocketAddress> p = new P1<InetSocketAddress>() { + private final Map<InetSocketAddress, Boolean> pingResMap = new HashMap<>(); - @Override public boolean apply(InetSocketAddress addr) { - Boolean res = pingResMap.get(addr); + @Override public boolean apply(InetSocketAddress addr) { + Boolean res = pingResMap.get(addr); - if (res == null) { - try { - res = pingNode(addr, null).get1() != null; - } - catch (IgniteCheckedException e) { - if (log.isDebugEnabled()) - log.debug("Failed to ping node [addr=" + addr + - ", err=" + e.getMessage() + ']'); - - res = false; - } - finally { - pingResMap.put(addr, res); - } + if (res == null) { + try { + res = pingNode(addr, null).get1() != null; } + catch (IgniteCheckedException e) { + if (log.isDebugEnabled()) + log.debug("Failed to ping node [addr=" + addr + + ", err=" + e.getMessage() + ']'); - return !res; + res = false; + } + finally { + pingResMap.put(addr, res); + } } + + return !res; } - ); + }; + + ArrayList<InetSocketAddress> rmvAddrs = null; + + for (InetSocketAddress addr : regAddrs) { + boolean rmv = !F.contains(currAddrs, addr) && p.apply(addr); + + if (rmv) { + if (rmvAddrs == null) + rmvAddrs = new ArrayList<>(); + + rmvAddrs.add(addr); + } + } // Unregister dead-nodes addresses. - if (!rmvAddrs.isEmpty()) { + if (rmvAddrs != null) { spi.ipFinder.unregisterAddresses(rmvAddrs); if (log.isDebugEnabled())