problem: service may miss available chain if initialized after

This commit is contained in:
Igor Artamonov
2019-08-09 23:27:03 -04:00
parent 7205a33ff3
commit 5660f4ca09
2 changed files with 8 additions and 2 deletions

View File

@@ -19,12 +19,18 @@ class AvailableChains(
private val callTargets = HashMap<Chain, EthereumTargets>()
fun add(chain: Chain) {
if (all.contains(chain)) {
return
}
all.add(chain)
bus.onNext(chain)
}
fun observe(): Flux<Chain> {
return Flux.from(bus)
return Flux.merge(
Flux.fromIterable(all),
Flux.from(bus)
)
}
fun supports(chain: Chain): Boolean {

View File

@@ -159,9 +159,9 @@ open class ConfiguredUpstreams(
override fun getOrCreateUpstream(chain: Chain): ChainUpstreams {
val current = chainMapping[chain]
if (current == null) {
availableChains.add(chain)
val created = ChainUpstreams(chain, ArrayList<Upstream>(), availableChains.targetFor(chain))
chainMapping[chain] = created
availableChains.add(chain)
return created
}
return current