From 7d7781244aa70f5070e6d9226715e5ecca9af9f6 Mon Sep 17 00:00:00 2001 From: liangzhiyan Date: Thu, 10 May 2018 11:11:12 +0800 Subject: [PATCH 1/3] add the disconnect notice --- .../java/org/tron/common/overlay/server/ChannelManager.java | 1 + src/main/java/org/tron/common/overlay/server/SyncPool.java | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/org/tron/common/overlay/server/ChannelManager.java b/src/main/java/org/tron/common/overlay/server/ChannelManager.java index 6ee3b78f323..fc741f5d356 100644 --- a/src/main/java/org/tron/common/overlay/server/ChannelManager.java +++ b/src/main/java/org/tron/common/overlay/server/ChannelManager.java @@ -150,6 +150,7 @@ public void notifyDisconnect(Channel channel) { || channel.getChannelHandlerContext().channel() == null) { return; } + channel.getNodeStatistics().nodeDisconnectedLocal(ReasonCode.UNKNOWN); InetSocketAddress socketAddress = (InetSocketAddress) channel.getChannelHandlerContext() .channel().remoteAddress(); recentlyDisconnected.put(socketAddress.getAddress(), new Date()); diff --git a/src/main/java/org/tron/common/overlay/server/SyncPool.java b/src/main/java/org/tron/common/overlay/server/SyncPool.java index b074138e854..404ad071fdd 100644 --- a/src/main/java/org/tron/common/overlay/server/SyncPool.java +++ b/src/main/java/org/tron/common/overlay/server/SyncPool.java @@ -206,10 +206,6 @@ public boolean test(NodeHandler handler) { if (handler.getNodeStatistics().getReputation() < 100) { return false; } - - if (handler.getNodeStatistics().isPenalized()) { - return false; - } return true; } From be9415795f81a20fbfa887df553eebcbf1263685 Mon Sep 17 00:00:00 2001 From: liangzhiyan Date: Thu, 10 May 2018 11:27:07 +0800 Subject: [PATCH 2/3] modify the score compute way --- .../java/org/tron/common/overlay/discover/NodeStatistics.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java b/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java index ca2cfbb384a..884491f686e 100644 --- a/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java +++ b/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java @@ -117,7 +117,9 @@ private int getSessionFairReputation() { } } } - int score = discoverReput + 10 * reput - disconnectTimes * 20; + int score = + discoverReput + 10 * reput - (int) Math.pow(2, disconnectTimes) * (disconnectTimes > 0 ? 10 + : 0); return score > 0 ? score : 0; } From c865d723f396be810b029bfeadff7cc568ca9a33 Mon Sep 17 00:00:00 2001 From: liangzhiyan Date: Thu, 10 May 2018 12:09:51 +0800 Subject: [PATCH 3/3] modify the disconnect times count way --- .../org/tron/common/overlay/discover/NodeStatistics.java | 6 ++++-- .../java/org/tron/common/overlay/server/ChannelManager.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java b/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java index 884491f686e..294003c7aae 100644 --- a/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java +++ b/src/main/java/org/tron/common/overlay/discover/NodeStatistics.java @@ -195,13 +195,15 @@ public boolean isPenalized() { public void nodeDisconnectedRemote(ReasonCode reason) { lastDisconnectedTime = System.currentTimeMillis(); tronLastRemoteDisconnectReason = reason; - disconnectTimes++; - persistedReputation = persistedReputation / 2; } public void nodeDisconnectedLocal(ReasonCode reason) { lastDisconnectedTime = System.currentTimeMillis(); tronLastLocalDisconnectReason = reason; + } + + public void notifyDisconnect() { + lastDisconnectedTime = System.currentTimeMillis(); disconnectTimes++; persistedReputation = persistedReputation / 2; } diff --git a/src/main/java/org/tron/common/overlay/server/ChannelManager.java b/src/main/java/org/tron/common/overlay/server/ChannelManager.java index fc741f5d356..04805421cc9 100644 --- a/src/main/java/org/tron/common/overlay/server/ChannelManager.java +++ b/src/main/java/org/tron/common/overlay/server/ChannelManager.java @@ -150,7 +150,7 @@ public void notifyDisconnect(Channel channel) { || channel.getChannelHandlerContext().channel() == null) { return; } - channel.getNodeStatistics().nodeDisconnectedLocal(ReasonCode.UNKNOWN); + channel.getNodeStatistics().notifyDisconnect(); InetSocketAddress socketAddress = (InetSocketAddress) channel.getChannelHandlerContext() .channel().remoteAddress(); recentlyDisconnected.put(socketAddress.getAddress(), new Date());