googleapis / googleapis/google-cloud-java

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 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
2.1k
派生
1.2k
平均合并
1 天 23 小时
30 天内合并 PR
157

描述

## Issue Details
I am using
```
26.84.0
---

com.google.cloud
libraries-bom
${google.cloud.libraries-bom.version}
pom
import

-----

com.google.cloud
google-cloud-geminidataanalytics

```
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:

```java
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

贡献指南

打开贡献指南

调研方向

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

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

评估

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

把新 issue 发到你的邮箱

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