Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.
This repository was archived by the owner on May 14, 2026. It is now read-only.

grpc-java 1.77.0 is not compatible #4012

Description

@blakeli0

The following two tests are consistently failing with grpc-java 1.77.0 and passing with 1.76.2.

Error:  Tests run: 65, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.556 s <<< FAILURE! -- in com.google.api.gax.grpc.InstantiatingGrpcChannelProviderTest
Error:  com.google.api.gax.grpc.InstantiatingGrpcChannelProviderTest.canUseDirectPath_happyPathWithBoundToken -- Time elapsed: 0.014 s <<< ERROR!
java.lang.IllegalStateException: Default config is invalid: Status{code=UNKNOWN, description=None of [grpclb] specified by Service Config are available., cause=null}
	at com.google.common.base.Preconditions.checkState(Preconditions.java:603)
	at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:616)
	at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:731)
	at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:278)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:750)
	at com.google.api.gax.grpc.ChannelPool.<init>(ChannelPool.java:106)
	at com.google.api.gax.grpc.ChannelPool.create(ChannelPool.java:84)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:358)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:351)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProviderTest.canUseDirectPath_happyPathWithBoundToken(InstantiatingGrpcChannelProviderTest.java:827)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

Error:  com.google.api.gax.grpc.InstantiatingGrpcChannelProviderTest.canUseDirectPath_happyPath -- Time elapsed: 0.002 s <<< ERROR!
java.lang.IllegalStateException: Default config is invalid: Status{code=UNKNOWN, description=None of [grpclb] specified by Service Config are available., cause=null}
	at com.google.common.base.Preconditions.checkState(Preconditions.java:603)
	at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:616)
	at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:731)
	at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:278)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:750)
	at com.google.api.gax.grpc.ChannelPool.<init>(ChannelPool.java:106)
	at com.google.api.gax.grpc.ChannelPool.create(ChannelPool.java:84)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:358)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:351)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProviderTest.canUseDirectPath_happyPath(InstantiatingGrpcChannelProviderTest.java:773)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

This is found when testing the upper bound dependencies versions. See the link for details.

Activity

  1. added
    type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.
    priority: p2Moderately-important priority. Fix may not be included in next release.
    on Dec 9, 2025
  2. ejona86 commented on Mar 12, 2026

    @ejona86

    There's an explicit usage of gRPC-LB. The test would start passing if you add a runtime dependency on io.grpc:grpc-grpclb.

    However, you shouldn't actually need grpclb because no client is using it; the server isn't running any more. It looks like there's some code that forces use of pick-first with grpclb. That should be the same as specifying just pick_first (not as a child of grpclb), which is actually the default.

    The quickest thing would be to change getDefaultDirectPathServiceConfig():

      private static ImmutableMap<String, ?> getDefaultDirectPathServiceConfig() {
        return ImmutableMap.<String, Object>of("loadBalancingConfig", ImmutableList.of("pick_first"));
      }
  3. ejona86 commented on Mar 12, 2026

    @ejona86

    For reference, this was caused by grpc-java removing an explicit dep on grpclb in v1.77.0

  4. blakeli0 commented on Mar 16, 2026

    @blakeli0
    ContributorAuthor

    Thanks @ejona86 for the pointers! It is now fixed in #4143.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: p2Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions