Fix retries

This commit is contained in:
Кирилл
2023-02-01 14:00:13 +04:00
parent b09bef4b5a
commit a049a54854
2 changed files with 98 additions and 10 deletions

View File

@@ -146,7 +146,7 @@ class EthereumDirectReader(
private fun readBlock(request: JsonRpcRequest, id: String): Mono<BlockContainer> {
return readWithQuorum(request)
.timeout(Defaults.timeoutInternal, Mono.error(TimeoutException("Block not read $id")))
.retryWhen(Retry.backoff(3, Duration.ofSeconds(1)))
.retryWhen(Retry.fixedDelay(3, Duration.ofMillis(200)))
.flatMap { blockbytes ->
val block = objectMapper.readValue(blockbytes, BlockJson::class.java) as BlockJson<TransactionRefJson>?
if (block == null) {
@@ -164,14 +164,18 @@ class EthereumDirectReader(
* Read from an Upstream applying a Quorum specific for that request
*/
private fun readWithQuorum(request: JsonRpcRequest): Mono<ByteArray> {
return quorumReaderFactory
.create(
up.getApiSource(Selector.empty),
callMethodsFactory.create().createQuorumFor(request.method),
// we do not use Signer for internal requests because it doesn't make much sense
null
)
.read(request)
.map { it.value }
return Mono.just(quorumReaderFactory)
.map {
it.create(
up.getApiSource(Selector.empty),
callMethodsFactory.create().createQuorumFor(request.method),
// we do not use Signer for internal requests because it doesn't make much sense
null
)
}.flatMap {
it.read(request)
}.map {
it.value
}
}
}