From dea9e9ec5ff751f8e4b3ac386770bb95a1b46de2 Mon Sep 17 00:00:00 2001 From: Termina1 Date: Fri, 2 Dec 2022 20:22:18 +0200 Subject: [PATCH] more logs --- .../dshackle/startup/ConfiguredUpstreams.kt | 2 +- .../forkchoice/NoChoiceWithPriorityForkChoice.kt | 11 ++++++++++- .../dshackle/upstream/grpc/EthereumPosGrpcUpstream.kt | 2 +- .../NoChoiceWithPriorityForkChoiceSpec.groovy | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/startup/ConfiguredUpstreams.kt b/src/main/kotlin/io/emeraldpay/dshackle/startup/ConfiguredUpstreams.kt index 97f63b74..c9fb7fce 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/startup/ConfiguredUpstreams.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/startup/ConfiguredUpstreams.kt @@ -177,7 +177,7 @@ open class ConfiguredUpstreams( execution, chain, urls, - NoChoiceWithPriorityForkChoice(conn.upstreamRating), + NoChoiceWithPriorityForkChoice(conn.upstreamRating, config.id!!), BlockValidator.ALWAYS_VALID ) val methods = buildMethods(config, chain) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoice.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoice.kt index 951647dd..81059e6d 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoice.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoice.kt @@ -3,14 +3,19 @@ package io.emeraldpay.dshackle.upstream.forkchoice import io.emeraldpay.dshackle.data.BlockContainer import io.emeraldpay.dshackle.data.BlockId import io.emeraldpay.dshackle.data.RingSet +import org.slf4j.LoggerFactory import java.util.concurrent.atomic.AtomicReference class NoChoiceWithPriorityForkChoice( - private val nodeRating: Int + private val nodeRating: Int, + private val upstreamId: String ) : ForkChoice { private val head = AtomicReference(null) private val seenBlocks = RingSet(100) + companion object { + private val log = LoggerFactory.getLogger(NoChoiceWithPriorityForkChoice::class.java) + } override fun getHead(): BlockContainer? { return head.get() } @@ -20,8 +25,10 @@ class NoChoiceWithPriorityForkChoice( } override fun choose(block: BlockContainer): ForkChoice.ChoiceResult { + log.debug("Adding priority to $upstreamId block ${block.height}") val nwhead = head.updateAndGet { curr -> if (!filter(block)) { + log.debug("Already seen block ${block.height} from $upstreamId") curr } else { seenBlocks.add(block.hash) @@ -29,8 +36,10 @@ class NoChoiceWithPriorityForkChoice( } } if (nwhead.hash == block.hash) { + log.debug("Accepted block ${block.height} from $upstreamId with $nodeRating") return ForkChoice.ChoiceResult.Updated(nwhead) } + log.debug("Declined block ${block.height} from $upstreamId with $nodeRating") return ForkChoice.ChoiceResult.Same(nwhead) } } diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/EthereumPosGrpcUpstream.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/EthereumPosGrpcUpstream.kt index 1424f951..a6cb11b0 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/EthereumPosGrpcUpstream.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/EthereumPosGrpcUpstream.kt @@ -102,7 +102,7 @@ open class EthereumPosGrpcUpstream( private val log = LoggerFactory.getLogger(EthereumGrpcUpstream::class.java) private val upstreamStatus = GrpcUpstreamStatus(overrideLabels) - private val grpcHead = GrpcHead(chain, this, remote, blockConverter, reloadBlock, NoChoiceWithPriorityForkChoice(nodeRating)) + private val grpcHead = GrpcHead(chain, this, remote, blockConverter, reloadBlock, NoChoiceWithPriorityForkChoice(nodeRating, parentId)) private var capabilities: Set = emptySet() private val defaultReader: Reader = client.getReader() diff --git a/src/test/groovy/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoiceSpec.groovy b/src/test/groovy/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoiceSpec.groovy index 6f862f60..de081b35 100644 --- a/src/test/groovy/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoiceSpec.groovy +++ b/src/test/groovy/io/emeraldpay/dshackle/upstream/forkchoice/NoChoiceWithPriorityForkChoiceSpec.groovy @@ -16,7 +16,7 @@ class NoChoiceWithPriorityForkChoiceSpec extends Specification { def "filters blocks"() { def blockR0 = blocks[0].copyWithRating(10) def blockR1 = blocks[1].copyWithRating(10) - def choice = new NoChoiceWithPriorityForkChoice(10) + def choice = new NoChoiceWithPriorityForkChoice(10, "test") when: choice.choose(blocks[0]) then: @@ -34,7 +34,7 @@ class NoChoiceWithPriorityForkChoiceSpec extends Specification { def "chooses blocks and adds rating"() { def blockR0 = blocks[0].copyWithRating(10) def blockR1 = blocks[1].copyWithRating(10) - def choice = new NoChoiceWithPriorityForkChoice(10) + def choice = new NoChoiceWithPriorityForkChoice(10, "test") when: choice.choose(blocks[0]) then: