Skip to content

Commit 14fda8f

Browse files
committed
catch exception min of peers
1 parent 4f234be commit 14fda8f

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

framework/src/main/java/org/tron/core/net/service/effective/ResilienceService.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,12 @@ private void disconnectLan() {
9292
int peerSize = tronNetDelegate.getActivePeer().size();
9393
if (peerSize >= CommonParameter.getInstance().getMinConnections()) {
9494
long now = System.currentTimeMillis();
95-
Optional<PeerConnection> one = tronNetDelegate.getActivePeer().stream()
95+
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
9696
.filter(peer -> !peer.isDisconnect())
9797
.filter(peer -> now - peer.getLastActiveTime() >= inactiveThreshold)
9898
.filter(peer -> !peer.getChannel().isTrustPeer())
99-
.min(Comparator.comparing(PeerConnection::getLastActiveTime, Long::compareTo));
100-
99+
.collect(Collectors.toList());
100+
Optional<PeerConnection> one = getEarliestPeer(peers);
101101
one.ifPresent(peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL));
102102
}
103103
}
@@ -110,12 +110,13 @@ private void disconnectIsolated2() {
110110

111111
//disconnect from the node whose lastActiveTime is smallest
112112
if (peerSize >= CommonParameter.getInstance().getMinActiveConnections()) {
113-
Optional<PeerConnection> one = tronNetDelegate.getActivePeer().stream()
113+
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
114114
.filter(peer -> !peer.isDisconnect())
115115
.filter(peer -> !peer.getChannel().isTrustPeer())
116116
.filter(peer -> peer.getChannel().isActive())
117-
.min(Comparator.comparing(PeerConnection::getLastActiveTime, Long::compareTo));
117+
.collect(Collectors.toList());
118118

119+
Optional<PeerConnection> one = getEarliestPeer(peers);
119120
one.ifPresent(peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL));
120121
}
121122

@@ -133,7 +134,7 @@ private void disconnectIsolated2() {
133134
try {
134135
peers.sort(Comparator.comparing(PeerConnection::getLastActiveTime, Long::compareTo));
135136
} catch (Exception e) {
136-
logger.warn("Sort peers failed: {}", e.getMessage());
137+
logger.warn("Sort disconnectIsolated2 peers failed: {}", e.getMessage());
137138
return;
138139
}
139140

@@ -145,6 +146,17 @@ private void disconnectIsolated2() {
145146
}
146147
}
147148

149+
private Optional<PeerConnection> getEarliestPeer(List<PeerConnection> pees) {
150+
Optional<PeerConnection> one = Optional.empty();
151+
try {
152+
one = pees.stream()
153+
.min(Comparator.comparing(PeerConnection::getLastActiveTime, Long::compareTo));
154+
} catch (Exception e) {
155+
logger.warn("Get earliest peer failed: {}", e.getMessage());
156+
}
157+
return one;
158+
}
159+
148160
private boolean isLanNode() {
149161
int peerSize = tronNetDelegate.getActivePeer().size();
150162
int activePeerSize = (int) tronNetDelegate.getActivePeer().stream()

0 commit comments

Comments
 (0)