Skip to content

grpc upgrade to 1.84.0 (was 1.62.2) along with related libraries - #8580

Draft
dconeybe wants to merge 10 commits into
mainfrom
dconeybe/GrpcUpgrade
Draft

dconeybe wants to merge 10 commits into
mainfrom
dconeybe/GrpcUpgrade

Conversation

@dconeybe

@dconeybe dconeybe commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

This PR upgrades gRPC and related libraries to their latest versions, including gRPC Kotlin, Protocol Buffers, and Google common protos. It also addresses Protobuf 4.x compatibility requirements across test suites and removes obsolete vendored files and unused dependencies.

Highlights

  • Core Library Upgrades: Upgraded gRPC from 1.62.2 to 1.84.0, gRPC Kotlin from 1.4.1 to 1.5.0, Protocol Buffers (javalite, protobufjavautil, and protoc) from 3.25.5 to 4.36.1, and protoGoogleCommonProtos from 1.18.0 to 2.75.0.
  • Protobuf 4.x Compatibility:
    • Upgraded truth-proto-extension to 1.4.5 (was 1.0) and adopted it in firebase-encoders-proto and transport-backend-cct test dependencies to fix runtime NoSuchMethodError exceptions resulting from the removal of FileDescriptor.getSyntax() in Protobuf 4.x.
    • Updated the parse() helper in ParsingTests.kt to accept List<MessageOrBuilder> instead of List<GeneratedMessageV3>, accommodating Protobuf 4.x where generated classes extend GeneratedMessage rather than GeneratedMessageV3.
  • Dependency & File Cleanup:
    • Removed the vendored descriptor.proto from protolite-well-known-types because it is now included directly upstream in protobuf-javalite:4.36.1.
    • Removed the unused api project(":protolite-well-known-types") dependency from firebase-perf.
Changelog
  • libs.versions.toml
    • Upgraded grpc to 1.84.0 (was 1.62.2) and grpcKotlin to 1.5.0 (was 1.4.1).
    • Upgraded javalite, protobufjavautil, and protoc to 4.36.1 (was 3.25.5).
    • Upgraded protoGoogleCommonProtos to 2.75.0 (was 1.18.0).
    • Upgraded truthProtoExtension to 1.4.5 (was 1.0).
  • descriptor.proto
    • Removed obsolete vendored descriptor.proto file from protolite-well-known-types, as it is now provided upstream by protobuf-javalite:4.36.1.
  • ParsingTests.kt
    • Changed the parse() helper parameter type from List<GeneratedMessageV3> to List<MessageOrBuilder> to support Protobuf 4.x, where generated message classes now extend GeneratedMessage instead of GeneratedMessageV3.
  • firebase-encoders-proto.gradle
    • Replaced hardcoded com.google.truth.extensions:truth-proto-extension:1.0 test dependency with libs.truth.proto.extension (1.4.5) to fix NoSuchMethodError caused by Protobuf 4.x removing FileDescriptor.getSyntax().
  • transport-backend-cct.gradle
    • Replaced hardcoded com.google.truth.extensions:truth-proto-extension:1.0 test dependency with libs.truth.proto.extension (1.4.5) to resolve Protobuf 4.x runtime test failures.
  • firebase-perf.gradle
    • Removed unused api project(":protolite-well-known-types") dependency.

@gemini-code-assist

Copy link
Copy Markdown
Contributor
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

📝 PRs merging into main branch

Our main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released.

@dconeybe
dconeybe force-pushed the dconeybe/GrpcUpgrade branch from 17326cf to 93b9681 Compare September 10, 2026 20:17
… to work around resulting build errors "FirestoreGrpc.java:762: error: package io.grpc.stub does not exist" caused by upstream bug google/protobuf-gradle-plugin#812
…, since it is now included in the upgraded `protobuf-javalite:4.36.1` dependency
@dconeybe
dconeybe force-pushed the dconeybe/GrpcUpgrade branch from 236ff68 to 8928d0f Compare September 11, 2026 19:12
…to-extension` to 1.4.5 (was 1.0)

This fixes the following error:

```
java.lang.NoSuchMethodError: 'com.google.protobuf.Descriptors$FileDescriptor$Syntax
```

This build error is caused by Protocol Buffers Java 4.x (4.36.1) which introduced
the Editions feature and eliminated the legacy method `Descriptors.FileDescriptor.getSyntax()`
along with the inner enum `Descriptors.FileDescriptor.Syntax`.
`truth-proto-extension:1.0` (compiled in 2019 against Protobuf 3.6.1) invokes
`FileDescriptor.getSyntax() == Syntax.PROTO3` Because `protobuf-java:4.36.1` is
on the test runtime classpath, the JVM cannot find `getSyntax()`, throwing `NoSuchMethodError`.
… `parse()` helper

This fixes the following error:

```
Argument type mismatch: actual type is 'List<SimpleProto!>', but 'List<GeneratedMessageV3>' was expected.
```

This build error is caused by Protocol Buffers Java 4.x (4.36.1) where generated
Java message classes now extend `com.google.protobuf.GeneratedMessage` instead
of the legacy `com.google.protobuf.GeneratedMessageV3`. Because generated message
classes like `SimpleProto` no longer extend `GeneratedMessageV3`, Kotlin rejects
passing `List<SimpleProto>` to a parameter typed as `List<GeneratedMessageV3>`.
Changing the parameter type to `MessageOrBuilder` allows any Protobuf message or
builder to be passed while providing access to `descriptorForType.fullName`.
…instead of hardcoded 1.0

This fixes the following error:

```
java.lang.NoSuchMethodError: 'com.google.protobuf.Descriptors$FileDescriptor$Syntax com.google.protobuf.Descriptors$FileDescriptor.getSyntax()'
```

This build error is caused by Protocol Buffers Java 4.x (4.36.1) which introduced
the Editions feature and eliminated the legacy method `Descriptors.FileDescriptor.getSyntax()`
along with the inner enum `Descriptors.FileDescriptor.Syntax`.
`truth-proto-extension:1.0` (compiled in 2019 against Protobuf 3.6.1) invokes
`FileDescriptor.getSyntax() == Syntax.PROTO3`. Because `protobuf-java:4.36.1` is
on the test runtime classpath, the JVM cannot find `getSyntax()`, throwing `NoSuchMethodError`.
Using `libs.truth.proto.extension` resolves to version 1.4.5, which is compatible
with Protobuf 4.x and checks presence via `FieldDescriptor.hasPresence()`.
@dconeybe dconeybe changed the title libs.versions.toml: upgrade grpc and related libraries to their latest versions grpc upgrade to 1.84.0 (was 1.62.2) along with related libraries Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant