From ed7cfdc90b6d6034f31af344ebd01f430c44ef91 Mon Sep 17 00:00:00 2001 From: Artem Rootman <4586640+artemrootman@users.noreply.github.com> Date: Thu, 23 Apr 2026 14:26:59 +0000 Subject: [PATCH] Add client_type label to upstream lag and availability metrics (#815) --- .../kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt index c4680e4f..7c7bb332 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt @@ -108,6 +108,7 @@ abstract class Multistream( private fun monitorUpstream(upstream: Upstream) { val upstreamId = upstream.getId() + val clientType = upstream.getLabels().firstOrNull()?.get("client_type") ?: "" // otherwise metric will stuck with prev upstream instance removeUpstreamMeters(upstreamId) @@ -118,11 +119,13 @@ abstract class Multistream( } .tag("chain", chain.chainCode) .tag("upstream", upstreamId) + .tag("client_type", clientType) .register(Metrics.globalRegistry) .id, Gauge.builder("$metrics.availability.status", upstream) { it.getStatus().grpcId.toDouble() } .tag("chain", chain.chainCode) .tag("upstream", upstreamId) + .tag("client_type", clientType) .register(Metrics.globalRegistry) .id, ) @@ -449,6 +452,7 @@ abstract class Multistream( UpstreamChangeEvent.ChangeType.REVALIDATED -> {} UpstreamChangeEvent.ChangeType.UPDATED -> { onUpstreamsUpdated() + monitorUpstream(event.upstream) updateUpstreams.emitNext(event.upstream) { _, res -> res == Sinks.EmitResult.FAIL_NON_SERIALIZED } }