@@ -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