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