problem: service may miss available chain if initialized after
This commit is contained in:
@@ -19,12 +19,18 @@ class AvailableChains(
|
|||||||
private val callTargets = HashMap<Chain, EthereumTargets>()
|
private val callTargets = HashMap<Chain, EthereumTargets>()
|
||||||
|
|
||||||
fun add(chain: Chain) {
|
fun add(chain: Chain) {
|
||||||
|
if (all.contains(chain)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
all.add(chain)
|
all.add(chain)
|
||||||
bus.onNext(chain)
|
bus.onNext(chain)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun observe(): Flux<Chain> {
|
fun observe(): Flux<Chain> {
|
||||||
return Flux.from(bus)
|
return Flux.merge(
|
||||||
|
Flux.fromIterable(all),
|
||||||
|
Flux.from(bus)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun supports(chain: Chain): Boolean {
|
fun supports(chain: Chain): Boolean {
|
||||||
|
|||||||
@@ -159,9 +159,9 @@ open class ConfiguredUpstreams(
|
|||||||
override fun getOrCreateUpstream(chain: Chain): ChainUpstreams {
|
override fun getOrCreateUpstream(chain: Chain): ChainUpstreams {
|
||||||
val current = chainMapping[chain]
|
val current = chainMapping[chain]
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
|
availableChains.add(chain)
|
||||||
val created = ChainUpstreams(chain, ArrayList<Upstream>(), availableChains.targetFor(chain))
|
val created = ChainUpstreams(chain, ArrayList<Upstream>(), availableChains.targetFor(chain))
|
||||||
chainMapping[chain] = created
|
chainMapping[chain] = created
|
||||||
availableChains.add(chain)
|
|
||||||
return created
|
return created
|
||||||
}
|
}
|
||||||
return current
|
return current
|
||||||
|
|||||||
Reference in New Issue
Block a user