Skip to content

Commit 2f47e5c

Browse files
authored
[MINOR] Eth peer toString() improvements (#6174)
* modifications to log messages for simplification * for debug logs, only use the short ID not the full peer * log timeouts and useless counts Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com> --------- Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
1 parent 8c35ce1 commit 2f47e5c

File tree

12 files changed

+55
-33
lines changed

12 files changed

+55
-33
lines changed

ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/TimestampBoundedByFutureParameter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.slf4j.LoggerFactory;
2424

2525
/**
26-
* Responsible for ensuring the timestamp of a block is not more than "acceptableClockDriftSeconds'
26+
* Responsible for ensuring the timestamp of a block is not more than "acceptableClockDriftSeconds"
2727
* into the future.
2828
*/
2929
public class TimestampBoundedByFutureParameter implements DetachedBlockHeaderValidationRule {

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeer.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,16 @@ public void removeChainEstimatedHeightListener(final long listenerId) {
210210
}
211211

212212
public void recordRequestTimeout(final int requestCode) {
213-
LOG.debug("Timed out while waiting for response from peer {}", this);
213+
LOG.debug("Timed out while waiting for response from peer {}", this.getShortNodeId());
214+
LOG.trace("Timed out while waiting for response from peer {}", this);
214215
reputation.recordRequestTimeout(requestCode).ifPresent(this::disconnect);
215216
}
216217

217218
public void recordUselessResponse(final String requestType) {
218-
LOG.debug("Received useless response for request type {} from peer {}", requestType, this);
219+
LOG.debug(
220+
"Received useless response for request type {} from peer {}",
221+
requestType,
222+
this.getShortNodeId());
219223
reputation.recordUselessResponse(System.currentTimeMillis()).ifPresent(this::disconnect);
220224
}
221225

@@ -253,14 +257,16 @@ public RequestManager.ResponseStream send(
253257
throws PeerNotConnected {
254258
if (connectionToUse.getAgreedCapabilities().stream()
255259
.noneMatch(capability -> capability.getName().equalsIgnoreCase(protocolName))) {
256-
LOG.debug("Protocol {} unavailable for this peer {}", protocolName, this);
260+
LOG.debug("Protocol {} unavailable for this peer {}", protocolName, this.getShortNodeId());
257261
return null;
258262
}
259263
if (permissioningProviders.stream()
260264
.anyMatch(
261265
p -> !p.isMessagePermitted(connectionToUse.getRemoteEnode(), messageData.getCode()))) {
262266
LOG.info(
263-
"Permissioning blocked sending of message code {} to {}", messageData.getCode(), this);
267+
"Permissioning blocked sending of message code {} to {}",
268+
messageData.getCode(),
269+
this.getShortNodeId());
264270
if (LOG.isDebugEnabled()) {
265271
LOG.debug(
266272
"Permissioning blocked by providers {}",
@@ -593,8 +599,8 @@ public boolean hasSupportForMessage(final int messageCode) {
593599
@Override
594600
public String toString() {
595601
return String.format(
596-
"PeerId %s, reputation %s, validated? %s, disconnected? %s, client: %s, connection %s, enode %s",
597-
nodeId(),
602+
"PeerId: %s... %s, validated? %s, disconnected? %s, client: %s, %s, %s",
603+
getShortNodeId(),
598604
reputation,
599605
isFullyValidated(),
600606
isDisconnected(),

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ private boolean registerDisconnect(
197197
disconnectCallbacks.forEach(callback -> callback.onDisconnect(peer));
198198
peer.handleDisconnect();
199199
abortPendingRequestsAssignedToDisconnectedPeers();
200-
LOG.debug("Disconnected EthPeer {}", peer);
200+
LOG.debug("Disconnected EthPeer {}", peer.getShortNodeId());
201+
LOG.trace("Disconnected EthPeer {}", peer);
201202
}
202203
}
203204
reattemptPendingPeerRequests();
@@ -391,7 +392,7 @@ public void disconnectWorstUselessPeer() {
391392
LOG.atDebug()
392393
.setMessage(
393394
"disconnecting peer {}. Waiting for better peers. Current {} of max {}")
394-
.addArgument(peer)
395+
.addArgument(peer::getShortNodeId)
395396
.addArgument(this::peerCount)
396397
.addArgument(this::getMaxPeers)
397398
.log();

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManager.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -382,11 +382,9 @@ public boolean shouldConnect(final Peer peer, final boolean incoming) {
382382
if (peer.getForkId().map(forkId -> forkIdManager.peerCheck(forkId)).orElse(true)) {
383383
LOG.trace("ForkId OK or not available");
384384
if (ethPeers.shouldConnect(peer, incoming)) {
385-
LOG.trace("EthPeers should connect is TRUE");
386385
return true;
387386
}
388387
}
389-
LOG.trace("Should connect in EthProtocolManager returns false");
390388
return false;
391389
}
392390

@@ -397,10 +395,10 @@ public void handleDisconnect(
397395
final boolean initiatedByPeer) {
398396
if (ethPeers.registerDisconnect(connection)) {
399397
LOG.debug(
400-
"Disconnect - {} - {} - {} - {} peers left\n{}",
398+
"Disconnect - {} - {} - {}... - {} peers left\n{}",
401399
initiatedByPeer ? "Inbound" : "Outbound",
402400
reason,
403-
connection.getPeer().getId(),
401+
connection.getPeer().getId().slice(0, 16),
404402
ethPeers.peerCount(),
405403
ethPeers);
406404
}

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/PeerReputation.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@ public PeerReputation(final int initialScore, final int maxScore) {
6565
public Optional<DisconnectReason> recordRequestTimeout(final int requestCode) {
6666
final int newTimeoutCount = getOrCreateTimeoutCount(requestCode).incrementAndGet();
6767
if (newTimeoutCount >= TIMEOUT_THRESHOLD) {
68-
LOG.debug("Disconnection triggered by repeated timeouts");
68+
LOG.debug(
69+
"Disconnection triggered by {} repeated timeouts for requestCode {}",
70+
newTimeoutCount,
71+
requestCode);
6972
score -= LARGE_ADJUSTMENT;
7073
return Optional.of(DisconnectReason.TIMEOUT);
7174
} else {
@@ -113,7 +116,9 @@ private boolean shouldRemove(final Long timestamp, final long currentTimestamp)
113116

114117
@Override
115118
public String toString() {
116-
return String.format("PeerReputation " + score);
119+
return String.format(
120+
"PeerReputation score: %d, timeouts: %s, useless: %s",
121+
score, timeoutCounts(), uselessResponseTimes.size());
117122
}
118123

119124
@Override

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/AbstractGetHeadersFromPeerTask.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ protected AbstractGetHeadersFromPeerTask(
6464
protected Optional<List<BlockHeader>> processResponse(
6565
final boolean streamClosed, final MessageData message, final EthPeer peer) {
6666
if (streamClosed) {
67-
// All outstanding requests have been responded to and we still haven't found the response
67+
// All outstanding requests have been responded to, and we still haven't found the response
6868
// we wanted. It must have been empty or contain data that didn't match.
6969
peer.recordUselessResponse("headers");
7070
return Optional.of(Collections.emptyList());
@@ -74,19 +74,19 @@ protected Optional<List<BlockHeader>> processResponse(
7474
final List<BlockHeader> headers = headersMessage.getHeaders(protocolSchedule);
7575
if (headers.isEmpty()) {
7676
// Message contains no data - nothing to do
77-
LOG.debug("headers.isEmpty. Peer: {}", peer);
77+
LOG.debug("headers.isEmpty. Peer: {}", peer.getShortNodeId());
7878
return Optional.empty();
7979
}
8080
if (headers.size() > count) {
8181
// Too many headers - this isn't our response
82-
LOG.debug("headers.size()>count. Peer: {}", peer);
82+
LOG.debug("headers.size()>count. Peer: {}", peer.getShortNodeId());
8383
return Optional.empty();
8484
}
8585

8686
final BlockHeader firstHeader = headers.get(0);
8787
if (!matchesFirstHeader(firstHeader)) {
8888
// This isn't our message - nothing to do
89-
LOG.debug("!matchesFirstHeader. Peer: {}", peer);
89+
LOG.debug("!matchesFirstHeader. Peer: {}", peer.getShortNodeId());
9090
return Optional.empty();
9191
}
9292

@@ -100,7 +100,7 @@ protected Optional<List<BlockHeader>> processResponse(
100100
header = headers.get(i);
101101
if (header.getNumber() != prevBlockHeader.getNumber() + expectedDelta) {
102102
// Skip doesn't match, this isn't our data
103-
LOG.debug("header not matching the expected number. Peer: {}", peer);
103+
LOG.debug("header not matching the expected number. Peer: {}", peer.getShortNodeId());
104104
return Optional.empty();
105105
}
106106
// if headers are supposed to be sequential check if a chain is formed
@@ -110,7 +110,7 @@ protected Optional<List<BlockHeader>> processResponse(
110110
if (!parent.getHash().equals(child.getParentHash())) {
111111
LOG.debug(
112112
"Sequential headers must form a chain through hashes (BREACH_OF_PROTOCOL), disconnecting peer: {}",
113-
peer);
113+
peer.getShortNodeId());
114114
peer.disconnect(DisconnectMessage.DisconnectReason.BREACH_OF_PROTOCOL);
115115
return Optional.empty();
116116
}
@@ -125,7 +125,11 @@ protected Optional<List<BlockHeader>> processResponse(
125125
updatePeerChainState(peer, header);
126126
}
127127

128-
LOG.debug("Received {} of {} headers requested from peer {}", headersList.size(), count, peer);
128+
LOG.debug(
129+
"Received {} of {} headers requested from peer {}",
130+
headersList.size(),
131+
count,
132+
peer.getShortNodeId());
129133
return Optional.of(headersList);
130134
}
131135

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/AbstractPeerRequestTask.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,11 @@ private void handleMessage(
108108
});
109109
} catch (final RLPException e) {
110110
// Peer sent us malformed data - disconnect
111-
LOG.debug("Disconnecting with BREACH_OF_PROTOCOL due to malformed message: {}", peer, e);
112-
LOG.trace("Message data: {}", message.getData());
111+
LOG.debug(
112+
"Disconnecting with BREACH_OF_PROTOCOL due to malformed message: {}",
113+
peer.getShortNodeId(),
114+
e);
115+
LOG.trace("Peer {} Malformed message data: {}", peer, message.getData());
113116
peer.disconnect(DisconnectReason.BREACH_OF_PROTOCOL);
114117
promise.completeExceptionally(new PeerBreachedProtocolException());
115118
}

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/AbstractRetryingSwitchingPeerTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ private void refreshPeers() {
146146
LOG.atDebug()
147147
.setMessage(
148148
"Refresh peers disconnecting peer {}. Waiting for better peers. Current {} of max {}")
149-
.addArgument(peer)
149+
.addArgument(peer::getShortNodeId)
150150
.addArgument(peers::peerCount)
151151
.addArgument(peers::getMaxPeers)
152152
.log();

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ protected PendingPeerRequest sendRequest() {
123123
"Requesting {} headers (hash {}...) from peer {}.",
124124
count,
125125
referenceHash.slice(0, 6),
126-
peer);
126+
peer.getShortNodeId());
127127
return peer.getHeadersByHash(referenceHash, count, skip, reverse);
128128
},
129129
minimumRequiredBlockNumber);

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByNumberTask.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,10 @@ protected PendingPeerRequest sendRequest() {
7878
return sendRequestToPeer(
7979
peer -> {
8080
LOG.debug(
81-
"Requesting {} headers (blockNumber {}) from peer {}.", count, blockNumber, peer);
81+
"Requesting {} headers (blockNumber {}) from peer {}.",
82+
count,
83+
blockNumber,
84+
peer.getShortNodeId());
8285
return peer.getHeadersByNumber(blockNumber, count, skip, reverse);
8386
},
8487
blockNumber);

0 commit comments

Comments
 (0)