From 855b65a2087f638e1f9ff4ef71dd75eff7f46cf1 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Mon, 22 Jan 2024 13:39:17 +0100 Subject: [PATCH] bump: grpc-core, grpc-interop-testing, ... 1.60.0 (was 1.58.0) (#1884) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bump: grpc-core, grpc-interop-testing, ... 1.60.0 (was 1.58.0) * All the places * Workaround for Netty not passing along authority anymore. * Mima, pass along the service name anyway for good measure * fix test --------- Co-authored-by: Johan Andrén --- benchmark-java/build.sbt | 2 +- .../gradle/AkkaGrpcPluginExtension.groovy | 2 +- plugin-tester-java/pom.xml | 2 +- plugin-tester-scala/pom.xml | 2 +- project/Dependencies.scala | 2 +- .../grpc-core-1.60.excludes | 2 + .../AkkaDiscoveryNameResolverProvider.scala | 4 +- .../akka/grpc/internal/NettyClientUtils.scala | 55 +++++++++++-------- ...kkaDiscoveryNameResolverProviderSpec.scala | 1 + .../gen-scala-server/00-interop/build.sbt | 2 +- 10 files changed, 43 insertions(+), 31 deletions(-) create mode 100644 runtime/src/main/mima-filters/2.4.0.backwards.excludes/grpc-core-1.60.excludes diff --git a/benchmark-java/build.sbt b/benchmark-java/build.sbt index 4e3ce6bce..72de22d35 100644 --- a/benchmark-java/build.sbt +++ b/benchmark-java/build.sbt @@ -9,7 +9,7 @@ run / javaOptions ++= List("-Xms1g", "-Xmx1g", "-XX:+PrintGCDetails", "-XX:+Prin // generate both client and server (default) in Java akkaGrpcGeneratedLanguages := Seq(AkkaGrpc.Java) -val grpcVersion = "1.58.1" // checked synced by VersionSyncCheckPlugin +val grpcVersion = "1.60.0" // checked synced by VersionSyncCheckPlugin val runtimeProject = ProjectRef(file("../"), "akka-grpc-runtime") diff --git a/gradle-plugin/src/main/groovy/akka/grpc/gradle/AkkaGrpcPluginExtension.groovy b/gradle-plugin/src/main/groovy/akka/grpc/gradle/AkkaGrpcPluginExtension.groovy index 9803c834b..0dbb7b7e8 100644 --- a/gradle-plugin/src/main/groovy/akka/grpc/gradle/AkkaGrpcPluginExtension.groovy +++ b/gradle-plugin/src/main/groovy/akka/grpc/gradle/AkkaGrpcPluginExtension.groovy @@ -9,7 +9,7 @@ class AkkaGrpcPluginExtension { static final String PROTOC_PLUGIN_SCALA_VERSION = "2.12" - static final String GRPC_VERSION = "1.58.1" // checked synced by VersionSyncCheckPlugin + static final String GRPC_VERSION = "1.60.0" // checked synced by VersionSyncCheckPlugin static final String PLUGIN_CODE = 'com.lightbend.akka.grpc.gradle' diff --git a/plugin-tester-java/pom.xml b/plugin-tester-java/pom.xml index e7c667b13..ab4e4f21b 100644 --- a/plugin-tester-java/pom.xml +++ b/plugin-tester-java/pom.xml @@ -16,7 +16,7 @@ 3.0.0 1.1.0 2.9.0 - 1.58.1 + 1.60.0 UTF-8 3.3.0 3.22.2 diff --git a/plugin-tester-scala/pom.xml b/plugin-tester-scala/pom.xml index f8bd328c3..f7ab8d2f2 100644 --- a/plugin-tester-scala/pom.xml +++ b/plugin-tester-scala/pom.xml @@ -14,7 +14,7 @@ 11 2.9.0 0.4.2 - 1.58.1 + 1.60.0 UTF-8 diff --git a/project/Dependencies.scala b/project/Dependencies.scala index ea68264c0..c5f390c9a 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -22,7 +22,7 @@ object Dependencies { val akkaHttp = "10.6.0" val akkaHttpBinary = "10.6" - val grpc = "1.58.1" // checked synced by VersionSyncCheckPlugin + val grpc = "1.60.0" // checked synced by VersionSyncCheckPlugin // Even referenced explicitly in the sbt-plugin's sbt-tests // If changing this, remember to update protoc plugin version to align in diff --git a/runtime/src/main/mima-filters/2.4.0.backwards.excludes/grpc-core-1.60.excludes b/runtime/src/main/mima-filters/2.4.0.backwards.excludes/grpc-core-1.60.excludes new file mode 100644 index 000000000..3e05b4ecd --- /dev/null +++ b/runtime/src/main/mima-filters/2.4.0.backwards.excludes/grpc-core-1.60.excludes @@ -0,0 +1,2 @@ +# internal API +ProblemFilters.exclude[DirectMissingMethodProblem]("akka.grpc.internal.AkkaDiscoveryNameResolverProvider.this") \ No newline at end of file diff --git a/runtime/src/main/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProvider.scala b/runtime/src/main/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProvider.scala index 3fe14bbb2..995e98cfc 100644 --- a/runtime/src/main/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProvider.scala +++ b/runtime/src/main/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProvider.scala @@ -15,6 +15,7 @@ import scala.concurrent.duration.FiniteDuration class AkkaDiscoveryNameResolverProvider( discovery: ServiceDiscovery, defaultPort: Int, + serviceName: String, portName: Option[String], protocol: Option[String], resolveTimeout: FiniteDuration)(implicit ec: ExecutionContext) @@ -26,7 +27,6 @@ class AkkaDiscoveryNameResolverProvider( override def getDefaultScheme: String = "http" override def newNameResolver(targetUri: URI, args: NameResolver.Args): AkkaDiscoveryNameResolver = { - require(targetUri.getAuthority != null, s"target uri should not have null authority, got [$targetUri]") - new AkkaDiscoveryNameResolver(discovery, defaultPort, targetUri.getAuthority, portName, protocol, resolveTimeout) + new AkkaDiscoveryNameResolver(discovery, defaultPort, serviceName, portName, protocol, resolveTimeout) } } diff --git a/runtime/src/main/scala/akka/grpc/internal/NettyClientUtils.scala b/runtime/src/main/scala/akka/grpc/internal/NettyClientUtils.scala index 6cc56e168..c89997b05 100644 --- a/runtime/src/main/scala/akka/grpc/internal/NettyClientUtils.scala +++ b/runtime/src/main/scala/akka/grpc/internal/NettyClientUtils.scala @@ -4,33 +4,38 @@ package akka.grpc.internal -import java.util.concurrent.TimeUnit -import javax.net.ssl.SSLContext -import akka.{ Done, NotUsed } import akka.annotation.InternalApi import akka.event.LoggingAdapter -import akka.grpc.{ GrpcClientSettings, GrpcResponseMetadata, GrpcSingleResponse } -import akka.stream.scaladsl.{ Flow, Keep, Source } -import io.grpc.{ CallOptions, MethodDescriptor } +import akka.grpc.GrpcClientSettings +import akka.grpc.GrpcResponseMetadata +import akka.grpc.GrpcSingleResponse +import akka.stream.scaladsl.Flow +import akka.stream.scaladsl.Keep +import akka.stream.scaladsl.Source +import akka.Done +import akka.NotUsed import io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts import io.grpc.netty.shaded.io.grpc.netty.NegotiationType import io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder -import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig.{ - Protocol, - SelectedListenerFailureBehavior, - SelectorFailureBehavior -} -import io.grpc.netty.shaded.io.netty.handler.ssl.{ - ApplicationProtocolConfig, - ApplicationProtocolNames, - SslContext, - SslContextBuilder -} +import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig.Protocol +import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig.SelectedListenerFailureBehavior +import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig.SelectorFailureBehavior +import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig +import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolNames +import io.grpc.netty.shaded.io.netty.handler.ssl.SslContext +import io.grpc.netty.shaded.io.netty.handler.ssl.SslContextBuilder +import io.grpc.CallOptions +import io.grpc.MethodDescriptor +import java.util.concurrent.TimeUnit +import javax.net.ssl.SSLContext import scala.annotation.nowarn import scala.concurrent.duration.FiniteDuration -import scala.concurrent.{ ExecutionContext, Future, Promise } -import scala.util.{ Failure, Success } +import scala.concurrent.ExecutionContext +import scala.concurrent.Future +import scala.concurrent.Promise +import scala.util.Failure +import scala.util.Success /** * INTERNAL API @@ -48,15 +53,17 @@ object NettyClientUtils { @nowarn("msg=deprecated") var builder = NettyChannelBuilder - // Not sure why netty wants to be able to shoe-horn the target into a URI... but ok, - // we follow their lead and encode the service name as the 'authority' of the URI. - .forTarget("//" + settings.serviceName) + // Used to be the way to pass the service name to the name resolver but + // Since grpc-core 1.60.0 Netty does no longer seem to pass the authority along, so we do that + // ourselves below (channel builder is not shared between different clients anyway). + .forTarget(s"//${settings.serviceName}") .flowControlWindow(NettyChannelBuilder.DEFAULT_FLOW_CONTROL_WINDOW) // TODO avoid nameResolverFactory #1092, then 'nowarn' can be removed above .nameResolverFactory( new AkkaDiscoveryNameResolverProvider( settings.serviceDiscovery, settings.defaultPort, + settings.serviceName, settings.servicePortName, settings.serviceProtocol, settings.resolveTimeout)) @@ -177,7 +184,9 @@ object NettyClientUtils { */ @InternalApi private def createNettySslContext(javaSslContext: SSLContext): SslContext = { - import io.grpc.netty.shaded.io.netty.handler.ssl.{ ClientAuth, IdentityCipherSuiteFilter, JdkSslContext } + import io.grpc.netty.shaded.io.netty.handler.ssl.ClientAuth + import io.grpc.netty.shaded.io.netty.handler.ssl.IdentityCipherSuiteFilter + import io.grpc.netty.shaded.io.netty.handler.ssl.JdkSslContext // See // https://github.com/netty/netty/blob/4.1/handler/src/main/java/io/netty/handler/ssl/JdkSslContext.java#L229-L309 val apn = new ApplicationProtocolConfig( diff --git a/runtime/src/test/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProviderSpec.scala b/runtime/src/test/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProviderSpec.scala index 936050c36..dfae3e42d 100644 --- a/runtime/src/test/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProviderSpec.scala +++ b/runtime/src/test/scala/akka/grpc/internal/AkkaDiscoveryNameResolverProviderSpec.scala @@ -51,6 +51,7 @@ class AkkaDiscoveryNameResolverProviderSpec val provider = new AkkaDiscoveryNameResolverProvider( discovery, 443, + serviceName = serviceName, portName = None, protocol = None, resolveTimeout = 3.seconds) diff --git a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/build.sbt b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/build.sbt index c10794fc1..2e4674e8d 100644 --- a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/build.sbt +++ b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/build.sbt @@ -4,7 +4,7 @@ resolvers += "Akka library repository".at("https://repo.akka.io/maven") organization := "com.lightbend.akka.grpc" -val grpcVersion = "1.58.1" // checked synced by VersionSyncCheckPlugin +val grpcVersion = "1.60.0" // checked synced by VersionSyncCheckPlugin libraryDependencies ++= Seq( "io.grpc" % "grpc-interop-testing" % grpcVersion % "protobuf-src",