GCP Pub/Sub出现io.grpc.StatusException CANCELLED错误的原因及触发场景咨询
GCP Pub/Sub订阅错误:原因与触发场景
错误栈信息
io.grpc.Status.asException(Status.java:541) at com.google.cloud.pubsub.v1.StreamingSubscriberConnection.doStop(StreamingSubscriberConnection.java:139) at com.google.api.core.AbstractApiService$InnerService.doStop(AbstractApiService.java:153) at com.google.common.util.concurrent.AbstractService.stopAsync(AbstractService.java:281) at com.google.api.core.AbstractApiService.stopAsync(AbstractApiService.java:129) at com.google.cloud.pubsub.v1.Subscriber.stopConnections(Subscriber.java:394) at com.google.cloud.pubsub.v1.Subscriber.stopAllStreamingConnections(Subscriber.java:367) at com.google.cloud.pubsub.v1.Subscriber.access$1700(Subscriber.java:93) at com.google.cloud.pubsub.v1.Subscriber$3.run(Subscriber.java:308) at java.base/java.lang.Thread.run(Thread.java:832)
错误原因
该异常是gRPC连接终止状态的封装形式,核心是StreamingSubscriberConnection在执行停止操作时,将连接终止的状态转为异常抛出。从调用链可见,是Subscriber组件主动发起了停止所有流式连接的指令,最终触发gRPC层面的异常封装。
触发场景
根据Pub/Sub开放API jar的说明,最典型的触发场景是订阅过期后执行资源清理操作。除此之外,以下场景也会触发相同流程:
- 客户端主动调用
stopAsync()等方法,手动终止订阅连接 - 订阅会话超时,服务端主动断开连接,客户端触发后续清理
- 客户端与服务端网络连接中断,重试失败后启动连接终止流程
- 订阅资源被删除,客户端检测到状态变化后执行连接清理
内容的提问来源于stack exchange,提问作者Krishna Kumar
相关产品推荐
相关产品推荐

