From dcbe05031dbf97ae5f5954e404279140a1eae06e Mon Sep 17 00:00:00 2001 From: wubin01 Date: Tue, 25 Jun 2019 15:50:03 +0800 Subject: [PATCH] optimizing the logic of fast forward node --- .../org/tron/core/net/messagehandler/BlockMsgHandler.java | 6 ++---- src/main/java/org/tron/core/net/service/AdvService.java | 6 ++++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/tron/core/net/messagehandler/BlockMsgHandler.java b/src/main/java/org/tron/core/net/messagehandler/BlockMsgHandler.java index 398d6224047..7949f128afb 100644 --- a/src/main/java/org/tron/core/net/messagehandler/BlockMsgHandler.java +++ b/src/main/java/org/tron/core/net/messagehandler/BlockMsgHandler.java @@ -41,8 +41,6 @@ public class BlockMsgHandler implements TronMsgHandler { private int maxBlockSize = BLOCK_SIZE + 1000; - private int threshold = 3; - private boolean fastForward = Args.getInstance().isFastForward(); @Override @@ -103,12 +101,12 @@ private void processBlock(PeerConnection peer, BlockCapsule block) throws P2pExc } Item item = new Item(blockId, InventoryType.BLOCK); - if (peer.isFastForwardPeer()) { + if (fastForward || peer.isFastForwardPeer()) { advService.addInvToCache(item); } if (fastForward) { - if (tronNetDelegate.getHeadBlockId().getNum() - block.getNum() > threshold) { + if (block.getNum() < tronNetDelegate.getHeadBlockId().getNum()) { logger.warn("Receive a low block {}, head {}", blockId.getString(), tronNetDelegate.getHeadBlockId().getString()); return; diff --git a/src/main/java/org/tron/core/net/service/AdvService.java b/src/main/java/org/tron/core/net/service/AdvService.java index 1664033ba44..3684946a833 100644 --- a/src/main/java/org/tron/core/net/service/AdvService.java +++ b/src/main/java/org/tron/core/net/service/AdvService.java @@ -102,7 +102,7 @@ synchronized public void addInvToCache(Item item) { synchronized public boolean addInv(Item item) { - if (fastForward) { + if (fastForward && item.getType().equals(InventoryType.TRX)) { return false; } @@ -252,7 +252,6 @@ synchronized private void consumerInvToSpread() { List peers = tronNetDelegate.getActivePeer().stream() .filter(peer -> !peer.isNeedSyncFromPeer() && !peer.isNeedSyncFromUs()) - .filter(peer -> !peer.isFastForwardPeer()) .collect(Collectors.toList()); if (invToSpread.isEmpty() || peers.isEmpty()) { @@ -310,6 +309,9 @@ public int getSize(PeerConnection peer) { public void sendInv() { send.forEach((peer, ids) -> ids.forEach((key, value) -> { + if (peer.isFastForwardPeer() && key.equals(InventoryType.TRX)) { + return; + } if (key.equals(InventoryType.BLOCK)) { value.sort(Comparator.comparingLong(value1 -> new BlockId(value1).getNum())); }