From 90d46d15a64f9f44d15d402cad00f38ad36f45a4 Mon Sep 17 00:00:00 2001 From: Igor Artamonov Date: Sat, 3 Aug 2019 16:21:30 -0400 Subject: [PATCH] solution: better order of availability status --- .../dshackle/upstream/UpstreamAvailability.kt | 21 ++++++++++++++++--- .../upstream/UpstreamAvailabilitySpec.groovy | 6 +++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamAvailability.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamAvailability.kt index f9f9eed3..3e726aeb 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamAvailability.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/UpstreamAvailability.kt @@ -2,10 +2,25 @@ package io.emeraldpay.dshackle.upstream enum class UpstreamAvailability(val grpcId: Int) { + /** + * Active fully synchronized node + */ OK(1), - IMMATURE(2), - SYNCING(3), - LAGGING(4), + /** + * Good node, but is still synchronizing a latest block + */ + LAGGING(2), + /** + * May be good, but node doesn't have enough peers to be sure it's on corrected chain + */ + IMMATURE(3), + /** + * Node is doing it's initial synchronization, is behind by at least several blocks + */ + SYNCING(4), + /** + * Unavailable node + */ UNAVAILABLE(5); companion object { diff --git a/src/test/groovy/io/emeraldpay/dshackle/upstream/UpstreamAvailabilitySpec.groovy b/src/test/groovy/io/emeraldpay/dshackle/upstream/UpstreamAvailabilitySpec.groovy index 38c9af3e..43846f4b 100644 --- a/src/test/groovy/io/emeraldpay/dshackle/upstream/UpstreamAvailabilitySpec.groovy +++ b/src/test/groovy/io/emeraldpay/dshackle/upstream/UpstreamAvailabilitySpec.groovy @@ -6,10 +6,10 @@ class UpstreamAvailabilitySpec extends Specification { def "Defined order"() { expect: - UpstreamAvailability.OK.compareTo(UpstreamAvailability.IMMATURE) < 0 + UpstreamAvailability.OK.compareTo(UpstreamAvailability.LAGGING) < 0 + UpstreamAvailability.LAGGING.compareTo(UpstreamAvailability.IMMATURE) < 0 UpstreamAvailability.IMMATURE.compareTo(UpstreamAvailability.SYNCING) < 0 - UpstreamAvailability.SYNCING.compareTo(UpstreamAvailability.LAGGING) < 0 - UpstreamAvailability.LAGGING.compareTo(UpstreamAvailability.UNAVAILABLE) < 0 + UpstreamAvailability.SYNCING.compareTo(UpstreamAvailability.UNAVAILABLE) < 0 UpstreamAvailability.OK.compareTo(UpstreamAvailability.UNAVAILABLE) < 0 UpstreamAvailability.UNAVAILABLE.compareTo(UpstreamAvailability.OK) > 0