Skip to content

Call DataChatServiceClient with Conversation leads to --> Suppressed: java.lang.RuntimeException: Asynchronous task failed at com.google.api.gax.rpc.ServerStreamIterator.hasNext(ServerStreamIterator.java:105) #13566

Description

@KaiSuchomel

Issue Details

I am using

<google.cloud.libraries-bom.version>26.84.0</google.cloud.libraries-bom.version>
---
 <dependency>
         <groupId>com.google.cloud</groupId>
         <artifactId>libraries-bom</artifactId>
         <version>${google.cloud.libraries-bom.version}</version>
         <type>pom</type>
                <scope>import</scope>
</dependency>
-----
 <dependency>
       <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-geminidataanalytics</artifactId>
</dependency>

When calling the DataChatServiceClient with a conversation i got:

com.google.api.gax.rpc.InternalException: io.grpc.StatusRuntimeException: INTERNAL: Internal error encountered.
	at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:120)
	at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:86)
	at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:41)
	at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:86)
	at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:66)
	at com.google.api.gax.grpc.ExceptionResponseObserver.onErrorImpl(ExceptionResponseObserver.java:82)
	at com.google.api.gax.rpc.StateCheckingResponseObserver.onError(StateCheckingResponseObserver.java:84)
	at com.google.api.gax.grpc.GrpcDirectStreamController$ResponseObserverAdapter.onClose(GrpcDirectStreamController.java:148)
	at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
	at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
	at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
	at com.google.api.gax.grpc.ChannelPool$ReleasingClientCall$1.onClose(ChannelPool.java:651)
	at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
	at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
	at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
	at com.google.api.gax.grpc.GrpcLoggingInterceptor$1$1.onClose(GrpcLoggingInterceptor.java:98)
	at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:566)
	at io.grpc.internal.ClientCallImpl.access$100(ClientCallImpl.java:72)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:734)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:715)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
	at java.base/java.lang.Thread.run(Thread.java:1474)
	Suppressed: java.lang.RuntimeException: Asynchronous task failed
		at com.google.api.gax.rpc.ServerStreamIterator.hasNext(ServerStreamIterator.java:105)
		at io.gec.bigquery.control.DataAgentChatService.forEachChatMessage(DataAgentChatService.java:120)
		at io.gec.bigquery.control.DataAgentChatService.chat(DataAgentChatService.java:102)
		at io.gec.bigquery.control.DataAgentChatService_ClientProxy.chat(Unknown Source)
		at io.gec.bigquery.boundary.ChatResource.chat(ChatResource.java:30)
		at io.gec.bigquery.boundary.ChatResource_ClientProxy.chat(Unknown Source)
		at io.gec.bigquery.boundary.ChatResource$quarkusrestinvoker$chat_6f06d6f38f3e27ba1e41c7eaa780f3bbd3a1ade8.invoke(Unknown Source)
		at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
		at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:190)
		at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
		at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:695)
		at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
		at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
		at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
		at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
		at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
		at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		... 1 more
Caused by: io.grpc.StatusRuntimeException: INTERNAL: Internal error encountered.
	at io.grpc.Status.asRuntimeException(Status.java:532)
	... 18 more

Here my Implementation:

 private ChatRequest buildChatRequest(String question, String conversationId) {
        String parent = locationName();

        Message userMessage = Message.newBuilder()
                .setUserMessage(UserMessage.newBuilder().setText(question).build())
                .build();

        ChatRequest.Builder requestBuilder = ChatRequest.newBuilder()
                .setParent(parent)
                .addMessages(userMessage);

        if (conversationId != null && !conversationId.isBlank()) {
            String conversationName = conversationName(conversationId);
            ConversationReference conversationReference = ConversationReference.newBuilder()
                    .setConversation(conversationName)
                    .setDataAgentContext(DataAgentContext.newBuilder()
                            .setDataAgent(configuredDataAgentName())
                            .build())
                    .build();
            requestBuilder.setConversationReference(conversationReference);
        } else {
            requestBuilder.setDataAgentContext(DataAgentContext.newBuilder()
                    .setDataAgent(configuredDataAgentName())
                    .build());
        }

        return requestBuilder.build();
    }

When calling without conversationId everything is working as expected.

Environment

  • Linux
  • JDK 25.0.2
  • 26.84.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions