在新创建的对象上获取成功之前要等待多长时间?

如果我创建一个对象,我要等待多长时间才能获取成功?我不想添加具有任意值的睡眠。


在下面的代码中,我尝试创建一个服务帐户和 Secret。然后我尝试立即获取它。


err := r.CreateSAandSecret()

if err != nil {

    log.Info("Not able to create SA and secret ")

    return "", err

}


// How long should the sleep be here ???

token, err := r.GetAuthorizationTokenfromSecret()

if err != nil {

    log.Info("Not able to get token from secret")

}

如果有更好的模式,请指教。


杨魅力
浏览 148回答 1
1回答

长风秋雁

没有单一的答案。从理论上讲,它应该总是在写入后读取,但是您在这里询问的是派生对象。这意味着您需要等待服务帐户控制器查看新对象并创建令牌密钥。控制器都使用由 etcd 手表驱动的 API 手表。虽然它通常很快,但无法保证任何特定的时间。大多数情况下,它会在 etcd 的 iops 负载下减慢速度,或者如果您一次创建 500 万个服务帐户,大多数控制器一次处理一个。同样在拜占庭式故障期间,手表可能会丢弃事件,这意味着它永远不会发生(直到您手动重新启动控制器或以其他方式触发协调)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go