diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt index 84bd3bef..2e6aa454 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt @@ -15,14 +15,10 @@ */ package io.emeraldpay.dshackle.upstream -import io.emeraldpay.dshackle.Global import io.emeraldpay.dshackle.data.BlockContainer import io.emeraldpay.dshackle.upstream.forkchoice.ForkChoice -import io.micrometer.core.instrument.Counter import io.micrometer.core.instrument.Gauge -import io.micrometer.core.instrument.Meter import io.micrometer.core.instrument.Metrics -import io.micrometer.core.instrument.Tag import org.slf4j.LoggerFactory import reactor.core.Disposable import reactor.core.publisher.Flux @@ -55,16 +51,14 @@ abstract class AbstractHead @JvmOverloads constructor( private var lastHeadUpdated = 0L private val lock = ReentrantLock() - init { val state = AtomicBoolean(false) Gauge.builder("stuck_head", state) { if (it.get()) 1.0 else 0.0 - } - .tag("upstream", upstreamId) - .tag("class", this.javaClass.simpleName) - .register(Metrics.globalRegistry) - + }.tag("upstream", upstreamId).tag("class", this.javaClass.simpleName).register(Metrics.globalRegistry) + Gauge.builder("current_head", forkChoice) { + it.getHead()?.height?.toDouble() ?: 0.0 + }.tag("upstream", upstreamId).tag("class", this.javaClass.simpleName).register(Metrics.globalRegistry) Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate( { val delay = System.currentTimeMillis() - lastHeadUpdated diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt index 3defc2ba..217bbcb0 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt @@ -39,13 +39,10 @@ import reactor.core.publisher.Flux import reactor.core.publisher.Mono import java.time.Duration import java.time.Instant -import java.util.* +import java.util.Locale import java.util.concurrent.atomic.AtomicReference import java.util.concurrent.locks.ReentrantLock import java.util.function.Predicate -import kotlin.collections.ArrayList -import kotlin.collections.HashMap -import kotlin.collections.HashSet import kotlin.concurrent.withLock /** @@ -150,7 +147,6 @@ abstract class Multistream( } } - /** * Get a source for direct APIs */