如果我创建一个对象,我要等待多长时间才能获取成功?我不想添加具有任意值的睡眠。在下面的代码中,我尝试创建一个服务帐户和 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")}如果有更好的模式,请指教。
1 回答

长风秋雁
TA贡献1757条经验 获得超7个赞
没有单一的答案。从理论上讲,它应该总是在写入后读取,但是您在这里询问的是派生对象。这意味着您需要等待服务帐户控制器查看新对象并创建令牌密钥。控制器都使用由 etcd 手表驱动的 API 手表。虽然它通常很快,但无法保证任何特定的时间。大多数情况下,它会在 etcd 的 iops 负载下减慢速度,或者如果您一次创建 500 万个服务帐户,大多数控制器一次处理一个。同样在拜占庭式故障期间,手表可能会丢弃事件,这意味着它永远不会发生(直到您手动重新启动控制器或以其他方式触发协调)。
- 1 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消