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

未关闭
#13,566 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
冷清
技术栈
google-cloud, java
领域
api, backend

调研方向

首先,使用 conversationId 重现失败,并将其与不带 conversationId 的正常请求进行比较。阅读 DataChatService.chat 和 forEachChatMessage,然后检查 buildChatRequest 以及 ConversationReference/DataAgentContext 的构造。完成的标准是基于 conversation 的聊天无需 INTERNAL 错误即可成功,同时无 conversation 路径继续正常工作。

由索引模型根据 Issue 内容生成。

描述

priority: p3 type: bug

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
主要语言
Java
星标
2.1k
派生
1.2k
平均合并
2 天 14 小时
30 天内合并 PR
192

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

googleapis/google-cloud-java 的其他 Issue

查看 googleapis/google-cloud-java 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。