You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新Google Pub/Sub订阅重试策略时遇内部错误[code=e8c0]求助

解决Google Pub/Sub订阅重试策略更新时的e8c0内部错误

问题原因

你当前的操作存在错误:当订阅原本未配置重试策略时,直接通过字段掩码更新retry_policy.minimum_backoff和retry_policy.maximum_backoff这两个子字段会触发服务端内部错误。因为此时订阅的retry_policy字段本身不存在,服务端无法对不存在字段的子属性进行更新操作。

修正方案

将UpdateMask的Paths改为直接指向"retry_policy",因为你需要创建整个重试策略对象,而非更新已有对象的子字段。

修正后的代码:

sub, err := client.GetSubscription(
    context.Background(), 
    &pubsubpb.GetSubscriptionRequest{
        Subscription: subscriptionName,
        })
// 省略错误检查
sub.RetryPolicy = &pubsubpb.RetryPolicy{
    MinimumBackoff: durationpb.New(c.config.MinimumBackoff),
    MaximumBackoff: durationpb.New(c.config.MaximumBackoff),
}
req := pubsubpb.UpdateSubscriptionRequest{
    Subscription: sub,
    UpdateMask: &fieldmaskpb.FieldMask{
        Paths: []string{"retry_policy"}, // 修改为整个字段路径
    },
}
_, err := client.UpdateSubscription(context.Background(), &req)

额外说明

如果后续需要更新已存在的重试策略的子字段(比如只修改最小退避时间),此时使用retry_policy.minimum_backoff这种子字段路径才是正确的,但前提是订阅已经配置过重试策略。

内容的提问来源于stack exchange,提问作者jmmurillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:03:11