Skip to content

Commit 0acc84b

Browse files
committed
set blockNotChangeThreshold from 90 to 60 seconds
1 parent 0d21388 commit 0acc84b

2 files changed

Lines changed: 63 additions & 57 deletions

File tree

framework/src/main/java/org/tron/core/config/args/Args.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,9 @@ public static void setParam(final String[] args, final String confFileName) {
848848

849849
PARAMETER.inactiveThreshold = config.hasPath(Constant.NODE_INACTIVE_THRESHOLD)
850850
? config.getInt(Constant.NODE_INACTIVE_THRESHOLD) : 600;
851+
if (PARAMETER.inactiveThreshold < 1) {
852+
PARAMETER.inactiveThreshold = 1;
853+
}
851854

852855
PARAMETER.maxTransactionPendingSize = config.hasPath(Constant.NODE_MAX_TRANSACTION_PENDING_SIZE)
853856
? config.getInt(Constant.NODE_MAX_TRANSACTION_PENDING_SIZE) : 2000;

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

Lines changed: 60 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class ResilienceService {
2424

2525
private static final long inactiveThreshold =
2626
CommonParameter.getInstance().getInactiveThreshold() * 1000L;
27-
public static final long blockNotChangeThreshold = 90 * 1000L;
27+
public static final long blockNotChangeThreshold = 60 * 1000L;
2828

2929
//when node is isolated, retention percent peers will not be disconnected
3030
public static final double retentionPercent = 0.8;
@@ -86,67 +86,69 @@ private void disconnectRandom() {
8686
}
8787

8888
private void disconnectLan() {
89-
if (isLanNode()) {
90-
// disconnect from the node that has keep inactive for more than inactiveThreshold
91-
// and its lastActiveTime is smallest
92-
int peerSize = tronNetDelegate.getActivePeer().size();
93-
if (peerSize >= CommonParameter.getInstance().getMinConnections()) {
94-
long now = System.currentTimeMillis();
95-
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
96-
.filter(peer -> !peer.isDisconnect())
97-
.filter(peer -> now - peer.getLastActiveTime() >= inactiveThreshold)
98-
.filter(peer -> !peer.getChannel().isTrustPeer())
99-
.collect(Collectors.toList());
100-
Optional<PeerConnection> one = getEarliestPeer(peers);
101-
one.ifPresent(peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL, "lan node"));
102-
}
89+
if (!isLanNode()) {
90+
return;
91+
}
92+
// disconnect from the node that has keep inactive for more than inactiveThreshold
93+
// and its lastActiveTime is smallest
94+
int peerSize = tronNetDelegate.getActivePeer().size();
95+
if (peerSize >= CommonParameter.getInstance().getMinConnections()) {
96+
long now = System.currentTimeMillis();
97+
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
98+
.filter(peer -> !peer.isDisconnect())
99+
.filter(peer -> now - peer.getLastActiveTime() >= inactiveThreshold)
100+
.filter(peer -> !peer.getChannel().isTrustPeer())
101+
.collect(Collectors.toList());
102+
Optional<PeerConnection> one = getEarliestPeer(peers);
103+
one.ifPresent(peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL, "lan node"));
103104
}
104105
}
105106

106107
private void disconnectIsolated2() {
107-
if (isIsolateLand2()) {
108-
logger.warn("Node is isolated, try to disconnect from peers");
109-
int peerSize = tronNetDelegate.getActivePeer().size();
110-
111-
//disconnect from the node whose lastActiveTime is smallest
112-
if (peerSize >= CommonParameter.getInstance().getMinActiveConnections()) {
113-
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
114-
.filter(peer -> !peer.isDisconnect())
115-
.filter(peer -> !peer.getChannel().isTrustPeer())
116-
.filter(peer -> peer.getChannel().isActive())
117-
.collect(Collectors.toList());
118-
119-
Optional<PeerConnection> one = getEarliestPeer(peers);
120-
one.ifPresent(
121-
peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL, "isolate2 and active"));
122-
}
108+
if (!isIsolateLand2()) {
109+
return;
110+
}
111+
logger.warn("Node is isolated, try to disconnect from peers");
112+
int peerSize = tronNetDelegate.getActivePeer().size();
123113

124-
//disconnect from some passive nodes, make sure retention nodes' num <= 0.8 * maxConnection,
125-
//so new peers can come in
126-
peerSize = tronNetDelegate.getActivePeer().size();
127-
int threshold = (int) (CommonParameter.getInstance().getMaxConnections() * retentionPercent);
128-
if (peerSize > threshold) {
129-
int disconnectSize = peerSize - threshold;
130-
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
131-
.filter(peer -> !peer.isDisconnect())
132-
.filter(peer -> !peer.getChannel().isTrustPeer())
133-
.filter(peer -> !peer.getChannel().isActive())
134-
.collect(Collectors.toList());
135-
try {
136-
peers.sort(Comparator.comparing(PeerConnection::getLastActiveTime, Long::compareTo));
137-
} catch (Exception e) {
138-
logger.warn("Sort disconnectIsolated2 peers failed: {}", e.getMessage());
139-
return;
140-
}
141-
int candidateSize = peers.size();
142-
if (peers.size() > disconnectSize) {
143-
peers = peers.subList(0, disconnectSize);
144-
}
145-
logger.info("All peer Size:{}, plan size:{}, candidate size:{}, real size:{}", peerSize,
146-
disconnectSize, candidateSize, peers.size());
147-
peers.forEach(
148-
peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL, "isolate2 and passive"));
114+
//disconnect from the node whose lastActiveTime is smallest
115+
if (peerSize >= CommonParameter.getInstance().getMinActiveConnections()) {
116+
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
117+
.filter(peer -> !peer.isDisconnect())
118+
.filter(peer -> !peer.getChannel().isTrustPeer())
119+
.filter(peer -> peer.getChannel().isActive())
120+
.collect(Collectors.toList());
121+
122+
Optional<PeerConnection> one = getEarliestPeer(peers);
123+
one.ifPresent(
124+
peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL, "isolate2 and active"));
125+
}
126+
127+
//disconnect from some passive nodes, make sure retention nodes' num <= 0.8 * maxConnection,
128+
//so new peers can come in
129+
peerSize = tronNetDelegate.getActivePeer().size();
130+
int threshold = (int) (CommonParameter.getInstance().getMaxConnections() * retentionPercent);
131+
if (peerSize > threshold) {
132+
int disconnectSize = peerSize - threshold;
133+
List<PeerConnection> peers = tronNetDelegate.getActivePeer().stream()
134+
.filter(peer -> !peer.isDisconnect())
135+
.filter(peer -> !peer.getChannel().isTrustPeer())
136+
.filter(peer -> !peer.getChannel().isActive())
137+
.collect(Collectors.toList());
138+
try {
139+
peers.sort(Comparator.comparing(PeerConnection::getLastActiveTime, Long::compareTo));
140+
} catch (Exception e) {
141+
logger.warn("Sort disconnectIsolated2 peers failed: {}", e.getMessage());
142+
return;
143+
}
144+
int candidateSize = peers.size();
145+
if (peers.size() > disconnectSize) {
146+
peers = peers.subList(0, disconnectSize);
149147
}
148+
logger.info("All peer Size:{}, plan size:{}, candidate size:{}, real size:{}", peerSize,
149+
disconnectSize, candidateSize, peers.size());
150+
peers.forEach(
151+
peer -> disconnectFromPeer(peer, ReasonCode.BAD_PROTOCOL, "isolate2 and passive"));
150152
}
151153
}
152154

@@ -166,7 +168,8 @@ private boolean isLanNode() {
166168
int activePeerSize = (int) tronNetDelegate.getActivePeer().stream()
167169
.filter(peer -> peer.getChannel().isActive())
168170
.count();
169-
return peerSize > 0 && peerSize == activePeerSize;
171+
return peerSize > CommonParameter.getInstance().getMinActiveConnections()
172+
&& peerSize == activePeerSize;
170173
}
171174

172175
private boolean isIsolateLand2() {

0 commit comments

Comments
 (0)