Skip to content

Commit f46fd50

Browse files
committed
Merge remote-tracking branch 'origin/develop' into etcm-213/relad-bloom-after-restart
2 parents ce8a83f + 17358d2 commit f46fd50

File tree

7 files changed

+32
-12
lines changed

7 files changed

+32
-12
lines changed

src/it/scala/io/iohk/ethereum/sync/util/CommonFakePeer.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import io.iohk.ethereum.ledger.InMemoryWorldStateProxy
1818
import io.iohk.ethereum.mpt.MerklePatriciaTrie
1919
import io.iohk.ethereum.network.EtcPeerManagerActor.PeerInfo
2020
import io.iohk.ethereum.network.PeerManagerActor.{FastSyncHostConfiguration, PeerConfiguration}
21-
import io.iohk.ethereum.network.discovery.Node
21+
import io.iohk.ethereum.network.discovery.{DiscoveryConfig, Node}
2222
import io.iohk.ethereum.network.discovery.PeerDiscoveryManager.{DiscoveredNodesInfo, DiscoveryNodeInfo}
2323
import io.iohk.ethereum.network.handshaker.{EtcHandshaker, EtcHandshakerConfiguration, Handshaker}
2424
import io.iohk.ethereum.network.p2p.EthereumMessageDecoder
@@ -94,6 +94,7 @@ abstract class CommonFakePeer(peerName: String, fakePeerCustomConfig: FakePeerCu
9494
RocksDbDataSource(getRockDbTestConfig(tempDir.toAbsolutePath.toString), Namespaces.nsSeq)
9595
}
9696
lazy val blockchainConfig = Config.blockchains.blockchainConfig
97+
lazy val discoveryConfig = DiscoveryConfig(Config.config, blockchainConfig.bootstrapNodes)
9798

9899
/**
99100
* Default persist interval is 20s, which is too long for tests. As in all tests we treat peer as connected when
@@ -171,7 +172,8 @@ abstract class CommonFakePeer(peerName: String, fakePeerCustomConfig: FakePeerCu
171172
knownNodesManager,
172173
handshaker,
173174
authHandshaker,
174-
EthereumMessageDecoder
175+
EthereumMessageDecoder,
176+
discoveryConfig
175177
),
176178
"peer-manager"
177179
)

src/it/scala/io/iohk/ethereum/txExecTest/util/DumpChainApp.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import org.bouncycastle.util.encoders.Hex
2727

2828
import scala.concurrent.duration._
2929
import io.iohk.ethereum.domain.BlockHeader.HeaderExtraFields.HefEmpty
30+
import io.iohk.ethereum.network.discovery.DiscoveryConfig
3031
import monix.reactive.Observable
3132

3233
object DumpChainApp extends App with NodeKeyBuilder with SecureRandomBuilder with AuthHandshakerBuilder {
@@ -38,6 +39,7 @@ object DumpChainApp extends App with NodeKeyBuilder with SecureRandomBuilder wit
3839
val maxBlocks = conf.getInt("maxBlocks")
3940

4041
val blockchainConfig = Config.blockchains.blockchainConfig
42+
val discoveryConfig = DiscoveryConfig(Config.config, blockchainConfig.bootstrapNodes)
4143

4244
val peerConfig = new PeerConfiguration {
4345
override val rlpxConfiguration: RLPxConfiguration = Config.Network.peer.rlpxConfiguration
@@ -95,7 +97,8 @@ object DumpChainApp extends App with NodeKeyBuilder with SecureRandomBuilder wit
9597
knownNodesManager = actorSystem.deadLetters, // TODO: fixme
9698
handshaker = handshaker,
9799
authHandshaker = authHandshaker,
98-
messageDecoder = EthereumMessageDecoder
100+
messageDecoder = EthereumMessageDecoder,
101+
discoveryConfig
99102
),
100103
"peer-manager"
101104
)

src/main/resources/application.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ mantis {
6060
port = 30303
6161

6262
# Maximum discovered nodes stored (TODO: remove me once full protocol is in place)
63-
nodes-limit = 1000
63+
nodes-limit = 5000
6464

6565
# Initial delay for discovery scan
6666
scan-initial-delay = 20.seconds

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ trait BlacklistSupport {
1212

1313
def scheduler: Scheduler
1414

15-
private val maxSize = 1000
15+
protected val maxBlacklistedNodes = 1000
1616

1717
val blacklistedPeers = mutable.LinkedHashMap.empty[BlackListId, Cancellable]
1818

1919
def blacklist(blacklistId: BlackListId, duration: FiniteDuration, reason: String): Unit = {
2020
if (duration > Duration.Zero) {
21-
if (blacklistedPeers.size >= maxSize) {
21+
if (blacklistedPeers.size >= maxBlacklistedNodes) {
2222
removeOldestPeer()
2323
}
2424
undoBlacklist(blacklistId)
25-
log.warning(s"Blacklisting peer ($blacklistId), $reason")
25+
log.debug(s"Blacklisting peer ($blacklistId), $reason")
2626
val unblacklistCancellable = scheduler.scheduleOnce(duration, self, UnblacklistPeer(blacklistId))
2727
blacklistedPeers.put(blacklistId, unblacklistCancellable)
2828
} else {

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import io.iohk.ethereum.network.PeerActor.PeerClosedConnection
1111
import io.iohk.ethereum.network.PeerActor.Status.Handshaked
1212
import io.iohk.ethereum.network.PeerEventBusActor._
1313
import io.iohk.ethereum.network.PeerManagerActor.PeerConfiguration
14-
import io.iohk.ethereum.network.discovery.PeerDiscoveryManager
14+
import io.iohk.ethereum.network.discovery.{DiscoveryConfig, PeerDiscoveryManager}
1515
import io.iohk.ethereum.network.handshaker.Handshaker
1616
import io.iohk.ethereum.network.handshaker.Handshaker.HandshakeResult
1717
import io.iohk.ethereum.network.p2p.messages.WireProtocol.Disconnect
@@ -30,12 +30,20 @@ class PeerManagerActor(
3030
peerConfiguration: PeerConfiguration,
3131
knownNodesManager: ActorRef,
3232
peerFactory: (ActorContext, InetSocketAddress, Boolean) => ActorRef,
33+
discoveryConfig: DiscoveryConfig,
3334
externalSchedulerOpt: Option[Scheduler] = None
3435
) extends Actor
3536
with ActorLogging
3637
with Stash
3738
with BlacklistSupport {
3839

40+
/**
41+
* Maximum number of blacklisted nodes will never be larger than number of peers provided by discovery
42+
* Discovery provides remote nodes from all networks (ETC,ETH, Mordor etc.) only during handshake we learn that some
43+
* of the remote nodes are not compatible that's why we mark them as useless (blacklist them)
44+
*/
45+
override val maxBlacklistedNodes: Int = discoveryConfig.nodesLimit
46+
3947
import PeerManagerActor._
4048
import akka.pattern.{ask, pipe}
4149

@@ -103,7 +111,7 @@ class PeerManagerActor(
103111
NetworkMetrics.BlacklistedPeersSize.set(blacklistedPeers.size)
104112
NetworkMetrics.PendingPeersSize.set(pendingPeers.size)
105113

106-
log.debug(
114+
log.info(
107115
s"Discovered ${nodesInfo.size} nodes, " +
108116
s"Blacklisted ${blacklistedPeers.size} nodes, " +
109117
s"connected to ${peers.size}/${peerConfiguration.maxOutgoingPeers + peerConfiguration.maxIncomingPeers}. " +
@@ -297,7 +305,8 @@ object PeerManagerActor {
297305
knownNodesManager: ActorRef,
298306
handshaker: Handshaker[R],
299307
authHandshaker: AuthHandshaker,
300-
messageDecoder: MessageDecoder
308+
messageDecoder: MessageDecoder,
309+
discoveryConfig: DiscoveryConfig
301310
): Props = {
302311
val factory: (ActorContext, InetSocketAddress, Boolean) => ActorRef =
303312
peerFactory(peerConfiguration, peerMessageBus, knownNodesManager, handshaker, authHandshaker, messageDecoder)
@@ -308,7 +317,8 @@ object PeerManagerActor {
308317
peerDiscoveryManager,
309318
peerConfiguration,
310319
knownNodesManager,
311-
peerFactory = factory
320+
peerFactory = factory,
321+
discoveryConfig
312322
)
313323
)
314324
}

src/main/scala/io/iohk/ethereum/nodebuilder/NodeBuilder.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ trait PeerManagerActorBuilder {
189189
with PeerEventBusBuilder
190190
with AuthHandshakerBuilder
191191
with PeerDiscoveryManagerBuilder
192+
with DiscoveryConfigBuilder
192193
with StorageBuilder
193194
with KnownNodesManagerBuilder =>
194195

@@ -202,7 +203,8 @@ trait PeerManagerActorBuilder {
202203
knownNodesManager,
203204
handshaker,
204205
authHandshaker,
205-
EthereumMessageDecoder
206+
EthereumMessageDecoder,
207+
discoveryConfig
206208
),
207209
"peer-manager"
208210
)

src/test/scala/io/iohk/ethereum/network/PeerManagerSpec.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ class PeerManagerSpec extends AnyFlatSpec with Matchers with Eventually with Nor
176176
var createdPeers: Seq[TestProbe] = Seq.empty
177177

178178
val peerConfiguration: PeerConfiguration = Config.Network.peer
179+
val discoveryConfig = DiscoveryConfig(Config.config, Config.blockchains.blockchainConfig.bootstrapNodes)
180+
179181
val peerDiscoveryManager = TestProbe()
180182
val peerEventBus = TestProbe()
181183
val knownNodesManager = TestProbe()
@@ -222,6 +224,7 @@ class PeerManagerSpec extends AnyFlatSpec with Matchers with Eventually with Nor
222224
peerConfiguration,
223225
knownNodesManager.ref,
224226
peerFactory,
227+
discoveryConfig,
225228
Some(time.scheduler)
226229
)
227230
)

0 commit comments

Comments
 (0)