In case empty selector in SubscribeNative we should use default dynamic merged head. (#172)

This commit is contained in:
a10zn8
2023-03-19 16:07:14 +03:00
committed by GitHub
parent 064a3e40c6
commit a47607d03d

View File

@@ -158,21 +158,29 @@ open class EthereumPosMultiStream(
}
override fun getHead(mather: Selector.Matcher): Head =
filteredHeads.computeIfAbsent(mather.describeInternal().intern()) { _ ->
upstreams.filter { mather.matches(it) }
.apply {
log.debug("Found $size upstreams matching [${mather.describeInternal()}]")
}
.let {
val selected = it.map { it.getHead() }
when (it.size) {
0 -> EmptyHead()
1 -> selected.first()
else -> MergedHead(selected, PriorityForkChoice(), "ETH head for ${it.map { it.getId() }}").apply {
start()
if (mather == Selector.empty) {
head
} else {
filteredHeads.computeIfAbsent(mather.describeInternal().intern()) { _ ->
upstreams.filter { mather.matches(it) }
.apply {
log.debug("Found $size upstreams matching [${mather.describeInternal()}]")
}
.let {
val selected = it.map { it.getHead() }
when (it.size) {
0 -> EmptyHead()
1 -> selected.first()
else -> MergedHead(
selected,
PriorityForkChoice(),
"ETH head for ${it.map { it.getId() }}"
).apply {
start()
}
}
}
}
}
}
override fun getFeeEstimation(): ChainFees {