From 153d0f7d856dd9cc3aa2fc4d1c4c5d1b8fa3b019 Mon Sep 17 00:00:00 2001 From: KirillPamPam Date: Fri, 2 Jun 2023 17:55:20 +0400 Subject: [PATCH] Fix update methods (#221) --- .../kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt | 7 +------ .../io/emeraldpay/dshackle/upstream/MultistreamSpec.groovy | 6 ++++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt index 263f0e62..d436c57e 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/Multistream.kt @@ -278,12 +278,7 @@ abstract class Multistream( private fun observeUpstreamsStatuses() { stateStream.asFlux() - .distinctUntilChanged( - { it }, - { prev, current -> - prev.status == current.status || prev.equals(current) - } - ).subscribe { + .subscribe { upstreams.filter { it.isAvailable() }.map { it.getMethods() }.let { callMethods = AggregatedCallMethods(it) } diff --git a/src/test/groovy/io/emeraldpay/dshackle/upstream/MultistreamSpec.groovy b/src/test/groovy/io/emeraldpay/dshackle/upstream/MultistreamSpec.groovy index 94968d56..5fec4876 100644 --- a/src/test/groovy/io/emeraldpay/dshackle/upstream/MultistreamSpec.groovy +++ b/src/test/groovy/io/emeraldpay/dshackle/upstream/MultistreamSpec.groovy @@ -264,11 +264,13 @@ class MultistreamSpec extends Specification { then: StepVerifier.create(states) .then { - up1.onStatus(status(BlockchainOuterClass.AvailabilityEnum.AVAIL_OK)) + up1.onStatus(status(BlockchainOuterClass.AvailabilityEnum.AVAIL_UNAVAILABLE)) up2.onStatus(status(BlockchainOuterClass.AvailabilityEnum.AVAIL_OK)) + up1.onStatus(status(BlockchainOuterClass.AvailabilityEnum.AVAIL_OK)) } - .expectNext(new Multistream.UpstreamChangeState(up1.getId(), UpstreamAvailability.OK)) + .expectNext(new Multistream.UpstreamChangeState(up1.getId(), UpstreamAvailability.UNAVAILABLE)) .expectNext(new Multistream.UpstreamChangeState(up2.getId(), UpstreamAvailability.OK)) + .expectNext(new Multistream.UpstreamChangeState(up1.getId(), UpstreamAvailability.OK)) .then { assert ms.getMethods().supportedMethods == Set.of("eth_test1", "eth_test2", "eth_test3") }