From 5fd23d94004f08cbe1097d8d6473cbfb0046bd57 Mon Sep 17 00:00:00 2001 From: Kannan J Date: Thu, 29 Oct 2026 05:37:09 +0000 Subject: [PATCH] Upgrade Gradle wrapper, dependencies, Bazel configs, and GitHub workflows - Upgrade Gradle wrapper to 8.14.6 in root and examples - Upgrade regular dependencies in gradle/libs.versions.toml (OTel 1.67.0, Guava 33.7.2, CEL 0.15.0, Conscrypt 2.8.0, Tomcat, Jetty, Undertow, Gson, Animal Sniffer) - Sync updated versions to MODULE.bazel, repositories.bzl, and examples/ - Upgrade actions/setup-java to v6 in GitHub workflows - Add targeted deprecation suppressions for OTel and CEL APIs to satisfy -Werror - Update Tomcat tests to use addServletMapping instead of deprecated addServletMappingDecoded TAG=agy CONV=47219e81-0cc8-4e51-a537-f813927351c7 --- .github/workflows/branch-testing.yml | 2 +- .github/workflows/testing.yml | 2 +- MODULE.bazel | 14 +++--- examples/example-gauth/pom.xml | 2 +- .../build.gradle | 4 +- examples/example-oauth/pom.xml | 2 +- examples/example-opentelemetry/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- gradle/libs.versions.toml | 46 +++++++++---------- gradle/wrapper/gradle-wrapper.properties | 2 +- .../io/grpc/opentelemetry/MetadataGetter.java | 4 ++ .../GrpcTraceBinContextPropagatorTest.java | 3 ++ repositories.bzl | 14 +++--- .../io/grpc/servlet/TomcatInteropTest.java | 2 +- .../io/grpc/servlet/TomcatTransportTest.java | 2 +- .../grpc/xds/internal/matcher/CelCommon.java | 3 ++ .../matcher/CelMatcherTestHelper.java | 3 ++ 17 files changed, 62 insertions(+), 49 deletions(-) diff --git a/.github/workflows/branch-testing.yml b/.github/workflows/branch-testing.yml index 32c280bf8ce..89649a799d1 100644 --- a/.github/workflows/branch-testing.yml +++ b/.github/workflows/branch-testing.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v7 - - uses: actions/setup-java@v5 + - uses: actions/setup-java@v6 with: java-version: ${{ matrix.jre }} distribution: 'temurin' diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 56bdc023187..0bd82ac6f67 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@v7 - - uses: actions/setup-java@v5 + - uses: actions/setup-java@v6 with: java-version: ${{ matrix.jre }} distribution: 'temurin' diff --git a/MODULE.bazel b/MODULE.bazel index cbf1f1bb0f4..e7a1b628a7a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -13,16 +13,16 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "com.google.auto.value:auto-value-annotations:1.11.0", "com.google.auto.value:auto-value:1.11.0", "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.14.0", - "com.google.errorprone:error_prone_annotations:2.50.0", + "com.google.code.gson:gson:2.15.0", + "com.google.errorprone:error_prone_annotations:2.51.0", "com.google.guava:failureaccess:1.0.1", - "com.google.guava:guava:33.6.0-android", + "com.google.guava:guava:33.7.2-android", "com.google.re2j:re2j:1.8", "com.google.s2a.proto.v2:s2a-proto:0.1.3", "com.google.truth:truth:1.4.5", - "dev.cel:runtime:0.13.1", - "dev.cel:protobuf:0.13.1", - "dev.cel:common:0.13.1", + "dev.cel:runtime:0.15.0", + "dev.cel:protobuf:0.15.0", + "dev.cel:common:0.15.0", "com.squareup.okhttp:okhttp:2.7.5", "com.squareup.okio:okio:2.10.0", # 3.0+ needs swapping to -jvm; need work to avoid flag-day "io.netty:netty-buffer:4.2.17.Final", @@ -45,7 +45,7 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "junit:junit:4.13.2", "org.mockito:mockito-core:4.4.0", "org.checkerframework:checker-qual:3.49.5", - "org.codehaus.mojo:animal-sniffer-annotations:1.27", + "org.codehaus.mojo:animal-sniffer-annotations:1.28", ] # GRPC_DEPS_END diff --git a/examples/example-gauth/pom.xml b/examples/example-gauth/pom.xml index c09fe8862d9..3f8cb45af4d 100644 --- a/examples/example-gauth/pom.xml +++ b/examples/example-gauth/pom.xml @@ -31,7 +31,7 @@ com.google.code.gson gson - 2.14.0 + 2.15.0 diff --git a/examples/example-gcp-csm-observability/build.gradle b/examples/example-gcp-csm-observability/build.gradle index ef830045d9e..aba42e2bf76 100644 --- a/examples/example-gcp-csm-observability/build.gradle +++ b/examples/example-gcp-csm-observability/build.gradle @@ -24,8 +24,8 @@ java { // updating the version in our release process. def grpcVersion = '1.86.0-SNAPSHOT' // CURRENT_GRPC_VERSION def protocVersion = '3.25.8' -def openTelemetryVersion = '1.64.0' -def openTelemetryPrometheusVersion = '1.64.0-alpha' +def openTelemetryVersion = '1.67.0' +def openTelemetryPrometheusVersion = '1.67.0-alpha' dependencies { implementation "io.grpc:grpc-protobuf:${grpcVersion}" diff --git a/examples/example-oauth/pom.xml b/examples/example-oauth/pom.xml index 6913eaa91af..07a66614564 100644 --- a/examples/example-oauth/pom.xml +++ b/examples/example-oauth/pom.xml @@ -33,7 +33,7 @@ com.google.code.gson gson - 2.14.0 + 2.15.0 diff --git a/examples/example-opentelemetry/build.gradle b/examples/example-opentelemetry/build.gradle index 6f18ee2f45a..d78fb0eefc9 100644 --- a/examples/example-opentelemetry/build.gradle +++ b/examples/example-opentelemetry/build.gradle @@ -23,8 +23,8 @@ java { // updating the version in our release process. def grpcVersion = '1.86.0-SNAPSHOT' // CURRENT_GRPC_VERSION def protocVersion = '3.25.8' -def openTelemetryVersion = '1.64.0' -def openTelemetryPrometheusVersion = '1.64.0-alpha' +def openTelemetryVersion = '1.67.0' +def openTelemetryPrometheusVersion = '1.67.0-alpha' dependencies { implementation "io.grpc:grpc-protobuf:${grpcVersion}" diff --git a/examples/gradle/wrapper/gradle-wrapper.properties b/examples/gradle/wrapper/gradle-wrapper.properties index b41387345b5..bf2c10219db 100644 --- a/examples/gradle/wrapper/gradle-wrapper.properties +++ b/examples/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 668649bf3a0..0fbaa8ea145 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,8 +22,8 @@ androidx-test-core = "androidx.test:core:1.7.0" androidx-test-ext-junit = "androidx.test.ext:junit:1.3.0" androidx-test-rules = "androidx.test:rules:1.7.0" androidx-test-runner = "androidx.test:runner:1.7.0" -animalsniffer = "org.codehaus.mojo:animal-sniffer:1.27" -animalsniffer-annotations = "org.codehaus.mojo:animal-sniffer-annotations:1.27" +animalsniffer = "org.codehaus.mojo:animal-sniffer:1.28" +animalsniffer-annotations = "org.codehaus.mojo:animal-sniffer-annotations:1.28" assertj-core = "org.assertj:assertj-core:3.27.7" # 1.11.1 started converting jsr305 @Nullable to jspecify # checkForUpdates: auto-value:1.11.0 @@ -37,18 +37,18 @@ checkstyle = "com.puppycrawl.tools:checkstyle:10.26.1" # checkstyle 10.0+ requires Java 11+ # See https://checkstyle.sourceforge.io/releasenotes_old_8-35_10-26.html#Release_10.0 # checkForUpdates: checkstylejava8:9.+ -cel-runtime = "dev.cel:runtime:0.13.1" -cel-protobuf = "dev.cel:protobuf:0.13.1" -cel-compiler = "dev.cel:compiler:0.13.1" +cel-runtime = "dev.cel:runtime:0.15.0" +cel-protobuf = "dev.cel:protobuf:0.15.0" +cel-compiler = "dev.cel:compiler:0.15.0" checkstylejava8 = "com.puppycrawl.tools:checkstyle:9.3" commons-math3 = "org.apache.commons:commons-math3:3.6.1" -conscrypt = "org.conscrypt:conscrypt-openjdk-uber:2.6.1" +conscrypt = "org.conscrypt:conscrypt-openjdk-uber:2.8.0" # 141.7340.3+ requires Java 17+ # checkForUpdates: cronet-api:119.6045.31 cronet-api = "org.chromium.net:cronet-api:119.6045.31" # checkForUpdates: cronet-embedded:119.6045.31 cronet-embedded = "org.chromium.net:cronet-embedded:119.6045.31" -errorprone-annotations = "com.google.errorprone:error_prone_annotations:2.50.0" +errorprone-annotations = "com.google.errorprone:error_prone_annotations:2.51.0" # 2.32.0+ requires Java 17+ # checkForUpdates: errorprone-core:2.31.+ errorprone-core = "com.google.errorprone:error_prone_core:2.31.0" @@ -67,13 +67,13 @@ google-auth-oauth2Http = "com.google.auth:google-auth-library-oauth2-http:1.42.1 # 3.23.11+ require protobuf 4.x # checkForUpdates: google-cloud-logging:3.23.10 google-cloud-logging = "com.google.cloud:google-cloud-logging:3.23.10" -gson = "com.google.code.gson:gson:2.14.0" -guava = "com.google.guava:guava:33.6.0-android" +gson = "com.google.code.gson:gson:2.15.0" +guava = "com.google.guava:guava:33.7.2-android" guava-betaChecker = "com.google.guava:guava-beta-checker:1.0" -guava-testlib = "com.google.guava:guava-testlib:33.6.0-android" +guava-testlib = "com.google.guava:guava-testlib:33.7.2-android" # JRE version is needed for projects where its a transitive dependency, f.e. gcp-observability. # May be different from the -android version. -guava-jre = "com.google.guava:guava:33.6.0-jre" +guava-jre = "com.google.guava:guava:33.7.2-jre" hdrhistogram = "org.hdrhistogram:HdrHistogram:2.2.2" # 6.0.0+ use java.lang.Deprecated forRemoval and since from Java 9 # checkForUpdates: jakarta-servlet-api:5.+ @@ -82,11 +82,11 @@ javax-servlet-api = "javax.servlet:javax.servlet-api:4.0.1" # 12.0.0+ require Java 17+ # checkForUpdates: jetty-client:11.+ jetty-client = "org.eclipse.jetty:jetty-client:11.0.26" -jetty-http2-server = "org.eclipse.jetty.http2:jetty-http2-server:12.1.11" +jetty-http2-server = "org.eclipse.jetty.http2:jetty-http2-server:12.1.14" # 10.0.25+ uses uses @Deprecated(since=/forRemoval=) from Java 9 # checkForUpdates: jetty-http2-server10:10.0.24 jetty-http2-server10 = "org.eclipse.jetty.http2:http2-server:10.0.24" -jetty-servlet = "org.eclipse.jetty.ee10:jetty-ee10-servlet:12.1.11" +jetty-servlet = "org.eclipse.jetty.ee10:jetty-ee10-servlet:12.1.14" # checkForUpdates: jetty-servlet10:10.0.24 jetty-servlet10 = "org.eclipse.jetty:jetty-servlet:10.0.24" jsr305 = "com.google.code.findbugs:jsr305:3.0.2" @@ -119,12 +119,12 @@ opencensus-contrib-grpc-metrics = { module = "io.opencensus:opencensus-contrib-g opencensus-exporter-stats-stackdriver = { module = "io.opencensus:opencensus-exporter-stats-stackdriver", version.ref = "opencensus" } opencensus-exporter-trace-stackdriver = { module = "io.opencensus:opencensus-exporter-trace-stackdriver", version.ref = "opencensus" } opencensus-impl = { module = "io.opencensus:opencensus-impl", version.ref = "opencensus" } -opentelemetry-api = "io.opentelemetry:opentelemetry-api:1.64.0" -opentelemetry-exporter-prometheus = "io.opentelemetry:opentelemetry-exporter-prometheus:1.64.0-alpha" -opentelemetry-gcp-resources = "io.opentelemetry.contrib:opentelemetry-gcp-resources:1.59.0-alpha" -opentelemetry-exporter-otlp = "io.opentelemetry:opentelemetry-exporter-otlp:1.64.0" -opentelemetry-sdk-extension-autoconfigure = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.64.0" -opentelemetry-sdk-testing = "io.opentelemetry:opentelemetry-sdk-testing:1.64.0" +opentelemetry-api = "io.opentelemetry:opentelemetry-api:1.67.0" +opentelemetry-exporter-prometheus = "io.opentelemetry:opentelemetry-exporter-prometheus:1.67.0-alpha" +opentelemetry-gcp-resources = "io.opentelemetry.contrib:opentelemetry-gcp-resources:1.61.0-alpha" +opentelemetry-exporter-otlp = "io.opentelemetry:opentelemetry-exporter-otlp:1.67.0" +opentelemetry-sdk-extension-autoconfigure = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.67.0" +opentelemetry-sdk-testing = "io.opentelemetry:opentelemetry-sdk-testing:1.67.0" perfmark-api = "io.perfmark:perfmark-api:0.27.0" # Not upgrading to 4.x as it is not yet ABI compatible. # https://github.com/protocolbuffers/protobuf/issues/17247 @@ -143,11 +143,11 @@ signature-android = "net.sf.androidscents.signature:android-api-level-24:7.0_r2" signature-java = "org.codehaus.mojo.signature:java18:1.0" # 11.0.0+ require Java 17+ # checkForUpdates: tomcat-embed-core:10.+ -tomcat-embed-core = "org.apache.tomcat.embed:tomcat-embed-core:10.1.57" +tomcat-embed-core = "org.apache.tomcat.embed:tomcat-embed-core:10.1.61" # checkForUpdates: tomcat-embed-core9:9.+ -tomcat-embed-core9 = "org.apache.tomcat.embed:tomcat-embed-core:9.0.120" +tomcat-embed-core9 = "org.apache.tomcat.embed:tomcat-embed-core:9.0.123" truth = "com.google.truth:truth:1.4.5" # checkForUpdates: undertow-servlet22:2.2.+ -undertow-servlet22 = "io.undertow:undertow-servlet:2.2.40.Final" +undertow-servlet22 = "io.undertow:undertow-servlet:2.2.41.Final" # checkForUpdates: undertow-servlet:2.3.+ -undertow-servlet = "io.undertow:undertow-servlet:2.3.26.Final" +undertow-servlet = "io.undertow:undertow-servlet:2.3.27.Final" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4f5eb9dcc0e..d3f0219867f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/opentelemetry/src/main/java/io/grpc/opentelemetry/MetadataGetter.java b/opentelemetry/src/main/java/io/grpc/opentelemetry/MetadataGetter.java index f49c029f2fb..588873e8aad 100644 --- a/opentelemetry/src/main/java/io/grpc/opentelemetry/MetadataGetter.java +++ b/opentelemetry/src/main/java/io/grpc/opentelemetry/MetadataGetter.java @@ -39,7 +39,11 @@ public static MetadataGetter getInstance() { return INSTANCE; } + // keys() is deprecated in OpenTelemetry 1.66+ in favor of treating TextMapGetter as a + // functional interface, but we keep the implementation for compatibility with propagators + // that inspect carrier keys. @Override + @SuppressWarnings("deprecation") public Iterable keys(Metadata carrier) { return carrier.keys(); } diff --git a/opentelemetry/src/test/java/io/grpc/opentelemetry/GrpcTraceBinContextPropagatorTest.java b/opentelemetry/src/test/java/io/grpc/opentelemetry/GrpcTraceBinContextPropagatorTest.java index f85b8067c26..8c3a44f3f90 100644 --- a/opentelemetry/src/test/java/io/grpc/opentelemetry/GrpcTraceBinContextPropagatorTest.java +++ b/opentelemetry/src/test/java/io/grpc/opentelemetry/GrpcTraceBinContextPropagatorTest.java @@ -50,7 +50,10 @@ public class GrpcTraceBinContextPropagatorTest { private static final TextMapSetter> setter = Map::put; private static final TextMapGetter> getter = new TextMapGetter>() { + // keys() is deprecated in OpenTelemetry 1.66+ in favor of treating TextMapGetter as a + // functional interface. @Override + @SuppressWarnings("deprecation") public Iterable keys(Map carrier) { return carrier.keySet(); } diff --git a/repositories.bzl b/repositories.bzl index 0f0296620ba..4d047945d91 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -18,16 +18,16 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "com.google.auto.value:auto-value-annotations:1.11.0", "com.google.auto.value:auto-value:1.11.0", "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.14.0", - "com.google.errorprone:error_prone_annotations:2.50.0", + "com.google.code.gson:gson:2.15.0", + "com.google.errorprone:error_prone_annotations:2.51.0", "com.google.guava:failureaccess:1.0.1", - "com.google.guava:guava:33.6.0-android", + "com.google.guava:guava:33.7.2-android", "com.google.re2j:re2j:1.8", "com.google.s2a.proto.v2:s2a-proto:0.1.3", "com.google.truth:truth:1.4.5", - "dev.cel:runtime:0.13.1", - "dev.cel:protobuf:0.13.1", - "dev.cel:common:0.13.1", + "dev.cel:runtime:0.15.0", + "dev.cel:protobuf:0.15.0", + "dev.cel:common:0.15.0", "com.squareup.okhttp:okhttp:2.7.5", "com.squareup.okio:okio:2.10.0", # 3.0+ needs swapping to -jvm; need work to avoid flag-day "io.netty:netty-buffer:4.2.17.Final", @@ -50,7 +50,7 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "junit:junit:4.13.2", "org.mockito:mockito-core:4.4.0", "org.checkerframework:checker-qual:3.49.5", - "org.codehaus.mojo:animal-sniffer-annotations:1.27", + "org.codehaus.mojo:animal-sniffer-annotations:1.28", ] # GRPC_DEPS_END diff --git a/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatInteropTest.java b/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatInteropTest.java index d072fea93a1..48dcf2e6c5e 100644 --- a/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatInteropTest.java +++ b/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatInteropTest.java @@ -73,7 +73,7 @@ protected void startServer(ServerBuilder builer) { ctx, "io.grpc.servlet.TomcatInteropTest", new GrpcServlet(((ServletServerBuilder) builer).buildServletAdapter())) .setAsyncSupported(true); - ctx.addServletMappingDecoded("/*", "io.grpc.servlet.TomcatInteropTest"); + ctx.addServletMapping("/*", "io.grpc.servlet.TomcatInteropTest"); // Explicitly disable safeguards against malicious clients, as some unit tests trigger these Http2Protocol http2Protocol = new Http2Protocol(); diff --git a/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatTransportTest.java b/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatTransportTest.java index cd73b096ccb..6b0b5228d8f 100644 --- a/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatTransportTest.java +++ b/servlet/src/tomcatTest/java/io/grpc/servlet/TomcatTransportTest.java @@ -91,7 +91,7 @@ public void start(ServerListener listener) throws IOException { Context ctx = tomcatServer.addContext(MYAPP, new File("build/tmp").getAbsolutePath()); Tomcat.addServlet(ctx, "TomcatTransportTest", grpcServlet) .setAsyncSupported(true); - ctx.addServletMappingDecoded("/*", "TomcatTransportTest"); + ctx.addServletMapping("/*", "TomcatTransportTest"); tomcatServer.getConnector().addUpgradeProtocol(new Http2Protocol()); // Workaround for https://github.com/grpc/grpc-java/issues/12540 // Prevent premature OutputBuffer recycling by disabling facade recycling. diff --git a/xds/src/main/java/io/grpc/xds/internal/matcher/CelCommon.java b/xds/src/main/java/io/grpc/xds/internal/matcher/CelCommon.java index 60884af14c5..206bacdd3ab 100644 --- a/xds/src/main/java/io/grpc/xds/internal/matcher/CelCommon.java +++ b/xds/src/main/java/io/grpc/xds/internal/matcher/CelCommon.java @@ -75,6 +75,9 @@ final class CelCommon { + "add|subtract|multiply|divide|modulo|negate)" + "[0-9]*(_.*)?$"); + // standardCelRuntimeBuilder and setStandardEnvironmentEnabled are deprecated in CEL 0.15.0 + // in favor of modular environment configuration. + @SuppressWarnings("deprecation") static final CelRuntime RUNTIME = CelRuntimeFactory.standardCelRuntimeBuilder() .setStandardEnvironmentEnabled(false) .setStandardFunctions(FUNCTIONS) diff --git a/xds/src/test/java/io/grpc/xds/internal/matcher/CelMatcherTestHelper.java b/xds/src/test/java/io/grpc/xds/internal/matcher/CelMatcherTestHelper.java index cb5e8a54017..7ff38682944 100644 --- a/xds/src/test/java/io/grpc/xds/internal/matcher/CelMatcherTestHelper.java +++ b/xds/src/test/java/io/grpc/xds/internal/matcher/CelMatcherTestHelper.java @@ -38,6 +38,9 @@ public final class CelMatcherTestHelper { }) .build(); + // setStandardEnvironmentEnabled is deprecated in CEL 0.15.0 in favor of modular environment + // configuration. + @SuppressWarnings("deprecation") private static final CelCompiler COMPILER = CelCompilerFactory.standardCelCompilerBuilder() .setStandardEnvironmentEnabled(false) .setStandardDeclarations(DECLARATIONS)