From c491831b61bda12773844b6c558070e9032ab461 Mon Sep 17 00:00:00 2001 From: Maksim Fomenkov Date: Wed, 30 Nov 2022 18:13:14 +0400 Subject: [PATCH] set gRPC message size limit 32M --- src/main/kotlin/io/emeraldpay/dshackle/Defaults.kt | 1 + src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt | 2 +- .../io/emeraldpay/dshackle/upstream/grpc/GrpcUpstreams.kt | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/Defaults.kt b/src/main/kotlin/io/emeraldpay/dshackle/Defaults.kt index fe9bc976..47870b00 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/Defaults.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/Defaults.kt @@ -21,6 +21,7 @@ import java.time.Duration class Defaults { companion object { + const val maxMessageSize: Int = 32 * 1024 * 1024 val timeout: Duration = Duration.ofSeconds(60) val timeoutInternal: Duration = timeout.dividedBy(4) val retryConnection: Duration = Duration.ofSeconds(10) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt b/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt index 7c9e1e53..cb558725 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt @@ -46,7 +46,7 @@ open class GrpcServer( log.info("Listening Native gRPC on ${mainConfig.host}:${mainConfig.port}") val serverBuilder = NettyServerBuilder .forAddress(InetSocketAddress(mainConfig.host, mainConfig.port)) - .maxInboundMessageSize(Int.MAX_VALUE) + .maxInboundMessageSize(Defaults.maxMessageSize) .let { if (mainConfig.accessLogConfig.enabled) { it.intercept(accessHandler) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/GrpcUpstreams.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/GrpcUpstreams.kt index 588d5fdd..ffae18e8 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/GrpcUpstreams.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/grpc/GrpcUpstreams.kt @@ -71,7 +71,7 @@ class GrpcUpstreams( fun start(): Flux { val chanelBuilder = NettyChannelBuilder.forAddress(host, port) // some messages are very large. many of them in megabytes, some even in gigabytes (ex. ETH Traces) - .maxInboundMessageSize(Int.MAX_VALUE) + .maxInboundMessageSize(Defaults.maxMessageSize) .enableRetry() .maxRetryAttempts(3) if (auth != null && StringUtils.isNotEmpty(auth.ca)) {