From 3d9193e11c35148ea96ac32ef336bc6823b16785 Mon Sep 17 00:00:00 2001 From: a10zn8 Date: Wed, 21 Aug 2024 16:45:22 +0300 Subject: [PATCH] always set onsyncingmode (#547) --- .../ethereum/EthereumChainSpecific.kt | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumChainSpecific.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumChainSpecific.kt index cbcceac1..21ac06ec 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumChainSpecific.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumChainSpecific.kt @@ -109,26 +109,29 @@ object EthereumChainSpecific : AbstractPollChainSpecific() { ) { data -> val raw = Global.objectMapper.readTree(data) if (raw.isBoolean) { - upstream.getHead().onSyncingNode(raw.asBoolean()) if (raw.asBoolean()) { UpstreamAvailability.SYNCING } else { UpstreamAvailability.OK } - } else if (raw.get("currentBlock") != null && raw.get("highestBlock") != null) { - val current = - BigInteger(raw.get("currentBlock")?.asText()?.lowercase()?.substringAfter("x"), 16) - val highest = - BigInteger(raw.get("highestBlock")?.asText()?.lowercase()?.substringAfter("x"), 16) + } else { + if (raw.get("currentBlock") != null && raw.get("highestBlock") != null) { + val current = + BigInteger(raw.get("currentBlock")?.asText()?.lowercase()?.substringAfter("x"), 16) + val highest = + BigInteger(raw.get("highestBlock")?.asText()?.lowercase()?.substringAfter("x"), 16) - if (highest - current > config.syncingLagSize.toBigInteger()) { - UpstreamAvailability.SYNCING + if (highest - current > config.syncingLagSize.toBigInteger()) { + UpstreamAvailability.SYNCING + } else { + UpstreamAvailability.OK + } } else { + log.error("Received unknown syncing object ${raw.toPrettyString()} for upstream ${upstream.getId()}") UpstreamAvailability.OK } - } else { - log.error("Received unknown syncing object ${raw.toPrettyString()} for upstream ${upstream.getId()}") - UpstreamAvailability.OK + }.also { + upstream.getHead().onSyncingNode(it == UpstreamAvailability.SYNCING) } } }