Skip to content

Commit 789739b

Browse files
authored
Merge pull request #4996 from wubin01/sync
fix(net): solve 'no need sync' issue reported by nodes
2 parents 9cf633d + a82003c commit 789739b

3 files changed

Lines changed: 9 additions & 0 deletions

File tree

framework/src/main/java/org/tron/core/net/messagehandler/ChainInventoryMsgHandler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public void processMessage(PeerConnection peer, TronMessage msg) throws P2pExcep
3939

4040
check(peer, chainInventoryMessage);
4141

42+
peer.setFetchAble(false);
43+
4244
peer.setNeedSyncFromPeer(true);
4345

4446
peer.setSyncChainRequested(null);
@@ -78,10 +80,12 @@ public void processMessage(PeerConnection peer, TronMessage msg) throws P2pExcep
7880
} catch (NoSuchElementException e) {
7981
logger.warn("Process ChainInventoryMessage failed, peer {}, isDisconnect:{}",
8082
peer.getInetAddress(), peer.isDisconnect());
83+
peer.setFetchAble(true);
8184
return;
8285
}
8386
}
8487

88+
peer.setFetchAble(true);
8589
if ((chainInventoryMessage.getRemainNum() == 0 && !peer.getSyncBlockToFetch().isEmpty())
8690
|| (chainInventoryMessage.getRemainNum() != 0
8791
&& peer.getSyncBlockToFetch().size() > NetConstants.SYNC_FETCH_BATCH_NUM)) {

framework/src/main/java/org/tron/core/net/peer/PeerConnection.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ public class PeerConnection {
6767
@Setter
6868
private volatile boolean isRelayPeer;
6969

70+
@Setter
71+
@Getter
72+
private volatile boolean fetchAble;
73+
7074
@Getter
7175
@Setter
7276
private ByteString address;

framework/src/main/java/org/tron/core/net/service/sync/SyncService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ private void startFetchSyncBlock() {
207207
HashMap<PeerConnection, List<BlockId>> send = new HashMap<>();
208208
tronNetDelegate.getActivePeer().stream()
209209
.filter(peer -> peer.isNeedSyncFromPeer() && peer.isIdle())
210+
.filter(peer -> peer.isFetchAble())
210211
.forEach(peer -> {
211212
if (!send.containsKey(peer)) {
212213
send.put(peer, new LinkedList<>());

0 commit comments

Comments
 (0)