Skip to content

Commit 8d496f8

Browse files
committed
prefer to disconnect from broadcast nodes when isOpenFullTcpDisconnect is enable
1 parent ea7ef8e commit 8d496f8

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void init() {
4747
} catch (Exception e) {
4848
logger.error("DisconnectRandom node failed", e);
4949
}
50-
}, initialDelay, 60, TimeUnit.SECONDS);
50+
}, initialDelay, 30, TimeUnit.SECONDS);
5151
} else {
5252
logger.info("OpenFullTcpDisconnect is disabled");
5353
}
@@ -72,13 +72,19 @@ public void init() {
7272
private void disconnectRandom() {
7373
int peerSize = tronNetDelegate.getActivePeer().size();
7474
if (peerSize >= CommonParameter.getInstance().getMaxConnections()) {
75-
long now = System.currentTimeMillis();
7675
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
77-
.filter(peer -> now - peer.getLastInteractiveTime() >= inactiveThreshold)
7876
.filter(peer -> !peer.getChannel().isTrustPeer())
7977
.filter(peer -> !peer.isNeedSyncFromUs() && !peer.isNeedSyncFromPeer())
8078
.collect(Collectors.toList());
81-
if (!peers.isEmpty()) {
79+
if (peers.size() >= 3) {
80+
Optional<PeerConnection> one = getEarliestPeer(peers);
81+
one.ifPresent(peer -> disconnectFromPeer(peer, ReasonCode.RANDOM_ELIMINATION,
82+
DisconnectCause.RANDOM_ELIMINATION));
83+
} else {
84+
peers = tronNetDelegate.getActivePeer().stream()
85+
.filter(peer -> !peer.getChannel().isTrustPeer())
86+
.filter(peer -> peer.isNeedSyncFromUs() || peer.isNeedSyncFromPeer())
87+
.collect(Collectors.toList());
8288
int index = new Random().nextInt(peers.size());
8389
disconnectFromPeer(peers.get(index), ReasonCode.RANDOM_ELIMINATION,
8490
DisconnectCause.RANDOM_ELIMINATION);

0 commit comments

Comments
 (0)