From 4f36257726f399735f3b6ca7d8ca424742ec3fe0 Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 20 May 2024 14:20:32 +0300 Subject: [PATCH] Check CallLimitValidator only at startup (#479) * Check CallLimitValidator only at startup checks * simplify code --- .../dshackle/upstream/UpstreamValidator.kt | 4 ++-- .../ethereum/EthereumUpstreamValidator.kt | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamValidator.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamValidator.kt index 207e324a..3df71e26 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamValidator.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamValidator.kt @@ -34,8 +34,8 @@ abstract class UpstreamValidator( abstract fun validateUpstreamSettings(): Mono - fun validateUpstreamSettingsOnStartup(): ValidateUpstreamSettingsResult { - return validateUpstreamSettings().block() ?: ValidateUpstreamSettingsResult.UPSTREAM_FATAL_SETTINGS_ERROR + open fun validateUpstreamSettingsOnStartup(): ValidateUpstreamSettingsResult { + return ValidateUpstreamSettingsResult.UPSTREAM_VALID } companion object { diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt index 8d37b572..04171438 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt @@ -80,13 +80,25 @@ open class EthereumUpstreamValidator @JvmOverloads constructor( } return Mono.zip( validateChain(), - validateCallLimit(), validateOldBlocks(), ).map { - listOf(it.t1, it.t2, it.t3).sorted().last() + listOf(it.t1, it.t2).maxOf { it } } } + override fun validateUpstreamSettingsOnStartup(): ValidateUpstreamSettingsResult { + if (options.disableUpstreamValidation) { + return ValidateUpstreamSettingsResult.UPSTREAM_VALID + } + return Mono.zip( + validateChain(), + validateOldBlocks(), + validateCallLimit(), + ).map { + listOf(it.t1, it.t2, it.t3).maxOf { it } + }.block() ?: ValidateUpstreamSettingsResult.UPSTREAM_SETTINGS_ERROR + } + private fun validateChain(): Mono { if (!options.validateChain) { return Mono.just(ValidateUpstreamSettingsResult.UPSTREAM_VALID)