From b0b0185fafe5d431587ac21fdb383e0ab7dd35b9 Mon Sep 17 00:00:00 2001 From: shaozhuguang Date: Sun, 28 Jun 2020 13:39:10 +0800 Subject: [PATCH] Update connect's cache of peers --- .../blockchain/gateway/service/PeerConnectionManager.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java b/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java index d64879e1..e0df616c 100644 --- a/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java +++ b/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java @@ -293,6 +293,7 @@ public class PeerConnectionManager implements PeerService, PeerConnector { // 查询其他所有节点对应的区块高度的情况 NetworkAddress defaultPeerAddress = null, latestPeerAddress = null; + Map tmpEntries = new ConcurrentHashMap<>(); for (Map.Entry entry : peerBlockchainServiceFactories.entrySet()) { PeerBlockchainServiceFactory sf = entry.getValue(); if (sf != serviceFactory) { @@ -311,7 +312,9 @@ public class PeerConnectionManager implements PeerService, PeerConnector { try { PeerBlockchainServiceFactory peerServiceFactory = PeerBlockchainServiceFactory.connect( gateWayKeyPair, peerAddress, peerProviders); - peerBlockchainServiceFactories.put(peerAddress, peerServiceFactory); + if (peerServiceFactory != null) { + tmpEntries.put(peerAddress, peerServiceFactory); + } } catch (Exception ee) { LOGGER.error(String.format("Peer[%s] reconnect fail !!!", entry.getKey()), e); @@ -321,6 +324,9 @@ public class PeerConnectionManager implements PeerService, PeerConnector { defaultPeerAddress = entry.getKey(); } } + if (!tmpEntries.isEmpty()) { + peerBlockchainServiceFactories.putAll(tmpEntries); + } LOGGER.info("Ledger[{}]'s master remote update to {}", ledgerHash.toBase58(), latestPeerAddress == null ? defaultPeerAddress : latestPeerAddress); }