Skip to content

Commit

Permalink
Fixed log when punishing a node by address
Browse files Browse the repository at this point in the history
  • Loading branch information
illuque authored and illuque-iov committed May 19, 2022
1 parent df4455c commit 52cbaa6
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 7 deletions.
24 changes: 24 additions & 0 deletions rskj-core/src/main/java/co/rsk/scoring/PeerScoringInformation.java
Expand Up @@ -175,6 +175,30 @@ public int badReputationCount() {
public long getPunishedUntil() {
return punishedUntil;
}

@Override
public String toString() {
return "PeerScoringInformation{" +
"successfulHandshakes=" + successfulHandshakes +
", failedHandshakes=" + failedHandshakes +
", invalidNetworks=" + invalidNetworks +
", repeatedMessages=" + repeatedMessages +
", validBlocks=" + validBlocks +
", validTransactions=" + validTransactions +
", invalidBlocks=" + invalidBlocks +
", invalidTransactions=" + invalidTransactions +
", invalidMessages=" + invalidMessages +
", timeoutMessages=" + timeoutMessages +
", unexpectedMessages=" + unexpectedMessages +
", invalidHeader=" + invalidHeader +
", score=" + score +
", punishments=" + punishments +
", goodReputation=" + goodReputation +
", punishedUntil=" + punishedUntil +
", id='" + id + '\'' +
", type='" + type + '\'' +
'}';
}
}


13 changes: 6 additions & 7 deletions rskj-core/src/main/java/co/rsk/scoring/PeerScoringManager.java
Expand Up @@ -114,12 +114,12 @@ public void recordEvent(NodeID id, InetAddress address, EventType event, String
synchronized (accessLock) {
if (id != null) {
PeerScoring scoring = peersByNodeID.computeIfAbsent(id, k -> peerScoringFactory.newInstance(id.toString()));
recordEventAndStartPunishment(scoring, event, this.nodePunishmentCalculator, id);
recordEventAndStartPunishment(scoring, event, this.nodePunishmentCalculator, nodeIdForLog(id));
}

if (address != null) {
PeerScoring scoring = peersByAddress.computeIfAbsent(address, k -> peerScoringFactory.newInstance(address.getHostAddress()));
recordEventAndStartPunishment(scoring, event, this.ipPunishmentCalculator, id);
recordEventAndStartPunishment(scoring, event, this.ipPunishmentCalculator, addressForLog(address));
}

logRecordedEvent(id, address, event, message, messageArgs);
Expand Down Expand Up @@ -345,9 +345,9 @@ public PeerScoring getPeerScoring(InetAddress address) {
* @param peerScoring the peer scoring
* @param event an event type
* @param punishmentCalculator calculator to use
* @param nodeID a node id
* @param nodeIdOrAddress a node identifier (nodeID or address) formatted for logging
*/
private void recordEventAndStartPunishment(PeerScoring peerScoring, EventType event, PunishmentCalculator punishmentCalculator, NodeID nodeID) {
private void recordEventAndStartPunishment(PeerScoring peerScoring, EventType event, PunishmentCalculator punishmentCalculator, String nodeIdOrAddress) {
peerScoring.updateScoring(event);

boolean hasBadReputationAlready = !peerScoring.refreshReputationAndPunishment();
Expand All @@ -360,9 +360,8 @@ private void recordEventAndStartPunishment(PeerScoring peerScoring, EventType ev
long punishmentTime = punishmentCalculator.calculate(peerScoring.getPunishmentCounter(), peerScoring.getScore());
peerScoring.startPunishment(punishmentTime);

String nodeIDFormatted = nodeIdForLog(nodeID);
logger.debug("NodeID {} has been punished for {} milliseconds. Last event {}", nodeIDFormatted, punishmentTime, event);
logger.debug("{}", PeerScoringInformation.buildByScoring(peerScoring, nodeIDFormatted, ""));
logger.debug("Node {} has been punished for {} milliseconds after event {}. {}",
nodeIdOrAddress, punishmentTime, event, PeerScoringInformation.buildByScoring(peerScoring, nodeIdOrAddress, ""));
}
}

Expand Down

0 comments on commit 52cbaa6

Please sign in to comment.