From 783aaaef05bfd3189e2483ee1909492bc05c51f2 Mon Sep 17 00:00:00 2001 From: a10zn8 Date: Fri, 24 Mar 2023 15:19:44 +0400 Subject: [PATCH] enable grpc reflection (#183) --- gradle/libs.versions.toml | 3 ++- .../io/emeraldpay/dshackle/GrpcServer.kt | 21 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cc35c3b5..7016d61c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -52,6 +52,7 @@ grpc-protobuf = { module = "io.grpc:grpc-protobuf", version.ref = "grpc" } grpc-stub = { module = "io.grpc:grpc-stub", version.ref = "grpc" } grpc-netty = { module = "io.grpc:grpc-netty", version.ref = "grpc" } grpc-testing = { module = "io.grpc:grpc-testing", version.ref = "grpc" } +grpc-services = { module = "io.grpc:grpc-services", version.ref = "grpc" } httpcomponents-httpmime = { module = "org.apache.httpcomponents:httpmime", version.ref = "httpcomponents" } httpcomponents-httpclient = { module = "org.apache.httpcomponents:httpclient", version.ref = "httpcomponents" } @@ -125,7 +126,7 @@ brave-instrumentation-grpc = "io.zipkin.brave:brave-instrumentation-grpc:5.15.0" [bundles] apache-commons = ["commons-io", "apache-commons-lang3", "apache-commons-collections4"] etherjar = ["etherjar-domain", "etherjar-hex", "etherjar-rpc-api", "etherjar-rpc-http", "etherjar-rpc-ws", "etherjar-tx", "etherjar-contract", "etherjar-erc20"] -grpc = ["grpc-protobuf", "grpc-stub", "grpc-netty", "grpc-proto-util"] +grpc = ["grpc-protobuf", "grpc-stub", "grpc-netty", "grpc-proto-util", "grpc-services"] httpcomponents = ["httpcomponents-httpmime", "httpcomponents-httpclient"] jackson = ["jackson-core", "jackson-databind", "jackson-datatype-jdk8", "jackson-datatype-jsr310", "jackson-module-kotlin"] kotlin = ["kotlin-stdlib-jdk8", "kotlin-reflect"] diff --git a/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt b/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt index 3b0b85cc..7df795f7 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt @@ -24,6 +24,7 @@ import io.grpc.ServerCall import io.grpc.ServerCallHandler import io.grpc.ServerInterceptor import io.grpc.netty.NettyServerBuilder +import io.grpc.protobuf.services.ProtoReflectionService import io.micrometer.core.instrument.Metrics import io.micrometer.core.instrument.binder.jvm.ExecutorServiceMetrics import org.slf4j.LoggerFactory @@ -66,16 +67,14 @@ open class GrpcServer( val serverBuilder = NettyServerBuilder .forAddress(InetSocketAddress(mainConfig.host, mainConfig.port)) .maxInboundMessageSize(Defaults.maxMessageSize) - .let { - if (mainConfig.accessLogConfig.enabled) { - it.intercept(accessHandler) - } - if (mainConfig.compression.grpc.serverEnabled) { - it.intercept(CompressionInterceptor()) - log.info("Compression enabled for gRPC server") - } - it - } + + if (mainConfig.accessLogConfig.enabled) { + serverBuilder.intercept(accessHandler) + } + if (mainConfig.compression.grpc.serverEnabled) { + serverBuilder.intercept(CompressionInterceptor()) + log.info("Compression enabled for gRPC server") + } serverBuilder.intercept(grpcServerBraveInterceptor) @@ -87,6 +86,8 @@ open class GrpcServer( serverBuilder.addService(it) } + serverBuilder.addService(ProtoReflectionService.newInstance()) + val pool = Executors.newFixedThreadPool(20, CustomizableThreadFactory("fixed-grpc-")) serverBuilder.executor(