Skip to content

Commit 6967d09

Browse files
author
Nicolás Tallar
authored
[Chore] Detailed logging of the handshaked peers (#719)
1 parent aca891a commit 6967d09

File tree

4 files changed

+47
-10
lines changed

4 files changed

+47
-10
lines changed

src/main/scala/io/iohk/ethereum/blockchain/sync/PeersClient.scala

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ class PeersClient(
3636

3737
def running(requesters: Requesters): Receive =
3838
handleBlacklistMessages orElse handlePeerListMessages orElse {
39-
case PrintStatus =>
40-
log.debug("PeersClient status: requests: {}, available peers: {}", requesters.size, peersToDownloadFrom.size)
39+
case PrintStatus => printStatus(requesters: Requesters)
4140
case BlacklistPeer(peerId, reason) => peerById(peerId).foreach(blacklistIfHandshaked(_, reason))
4241
case Request(message, peerSelector, toSerializable) =>
4342
val requester = sender()
@@ -99,6 +98,24 @@ class PeersClient(
9998
case _: GetBlockBodies => BlockBodies.code
10099
case _: GetNodeData => NodeData.code
101100
}
101+
102+
private def printStatus(requesters: Requesters): Unit = {
103+
log.debug(
104+
"Request status: requests in progress: {}, available peers: {}",
105+
requesters.size,
106+
peersToDownloadFrom.size
107+
)
108+
109+
lazy val handshakedPeersStatus = handshakedPeers.map { case (peer, info) =>
110+
val peerNetworkStatus = PeerNetworkStatus(
111+
peer,
112+
isBlacklisted = isBlacklisted(peer.id)
113+
)
114+
(peerNetworkStatus, info)
115+
}
116+
117+
log.debug(s"Handshaked peers status (number of peers: ${handshakedPeersStatus.size}): $handshakedPeersStatus")
118+
}
102119
}
103120

104121
object PeersClient {
@@ -123,6 +140,16 @@ object PeersClient {
123140
): Request[RequestMsg] =
124141
Request(message, peerSelector, toSerializable)
125142
}
143+
144+
case class PeerNetworkStatus(peer: Peer,
145+
isBlacklisted: Boolean) {
146+
override def toString: String =
147+
s"PeerNetworkStatus {" +
148+
s" RemotePeerAddress: ${peer.remoteAddress}," +
149+
s" ConnectionDirection: ${if (peer.incomingConnection) "Incoming" else "Outgoing"}," +
150+
s" Is blacklisted?: $isBlacklisted" +
151+
s" }"
152+
}
126153
case object PrintStatus extends PeersClientMessage
127154

128155
sealed trait ResponseMessage

src/main/scala/io/iohk/ethereum/network/EtcPeerManagerActor.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import io.iohk.ethereum.network.p2p.{Message, MessageSerializable}
1313
import io.iohk.ethereum.network.p2p.messages.CommonMessages.{NewBlock, Status}
1414
import io.iohk.ethereum.network.p2p.messages.PV62.{BlockHeaders, GetBlockHeaders, NewBlockHashes}
1515
import io.iohk.ethereum.network.p2p.messages.WireProtocol.Disconnect
16+
import io.iohk.ethereum.utils.ByteStringUtils
1617

1718
/**
1819
* EtcPeerManager actor is in charge of keeping updated information about each peer, while also being able to
@@ -243,6 +244,15 @@ object EtcPeerManagerActor {
243244

244245
def withBestBlockData(maxBlockNumber: BigInt, bestBlockHash: ByteString): PeerInfo =
245246
copy(maxBlockNumber = maxBlockNumber, bestBlockHash = bestBlockHash)
247+
248+
override def toString: String =
249+
s"PeerInfo {" +
250+
s" totalDifficulty: $totalDifficulty," +
251+
s" forkAccepted: $forkAccepted," +
252+
s" maxBlockNumber: $maxBlockNumber," +
253+
s" bestBlockHash: ${ByteStringUtils.hash2string(bestBlockHash)}," +
254+
s" handshakeStatus: $remoteStatus" +
255+
s" }"
246256
}
247257

248258
object PeerInfo {

src/main/scala/io/iohk/ethereum/network/PeerManagerActor.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class PeerManagerActor(
114114
log.debug("Trying to connect to {} nodes", nodesToConnect.size)
115115
nodesToConnect.foreach(n => self ! ConnectToPeer(n.node.toUri))
116116
} else {
117-
log.debug("The nodes list is empty")
117+
log.debug("The nodes list is empty, no new nodes to connect to")
118118
}
119119
}
120120

src/main/scala/io/iohk/ethereum/network/p2p/messages/CommonMessages.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ object CommonMessages {
3636
override def code: Int = Status.code
3737

3838
override def toString: String = {
39-
s"""Status {
40-
|protocolVersion: $protocolVersion
41-
|networkId: $networkId
42-
|totalDifficulty: $totalDifficulty
43-
|bestHash: ${Hex.toHexString(bestHash.toArray[Byte])}
44-
|genesisHash: ${Hex.toHexString(genesisHash.toArray[Byte])}
45-
|}""".stripMargin
39+
s"Status {" +
40+
s" protocolVersion: $protocolVersion," +
41+
s" networkId: $networkId," +
42+
s" totalDifficulty: $totalDifficulty," +
43+
s" bestHash: ${Hex.toHexString(bestHash.toArray[Byte])}," +
44+
s" genesisHash: ${Hex.toHexString(genesisHash.toArray[Byte])}" +
45+
s" }"
4646
}
4747
}
4848

0 commit comments

Comments
 (0)