【问题标题】:Will Kubernetes' client-go delta_fifo type cause deletion notifications to be missed?Kubernetes 的 client-go delta_fifo 类型会导致删除通知丢失吗?
【发布时间】:2018-07-01 17:11:37
【问题描述】:

我正在努力从client-go 项目中深入了解delta_fifo.go。我正在研究一种可能会删除资源删除报告的情况。

我有 98% 的倾向是我自己未能正确阅读代码,但在我看来 Delete() will skip a deletion if it doesn't find an appropriate "event queue" (my term for Deltas)Pop() will remove an event queue that it is processing,即使队列中的最后一个事件是添加的、更新或同步。

假设您从一组空的事件队列(一个空的queue 和空的items)开始,然后您得到以下且仅以下的:

不会Delete() skip broadcasting the deletion,因为relevant event queue no longer exists?那么既然queueActionLocked()在这种情况下不会被调用,那么是不是意味着任何下游ResourceEventListeners都不会被通知这次删除?

相对稳定的代码链接:

非常感谢任何帮助;谢谢!

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    您在 Delete() 中突出显示的路径仅在 knownObjects 为 nil 时调用。该选项的文档表明它用于确定队列的消费者知道哪些对象,如果为 nil,则表示消费者不关心检测所有删除

    https://github.com/kubernetes/kubernetes/blob/v1.9.0/staging/src/k8s.io/client-go/tools/cache/delta_fifo.go#L39-L42

    【讨论】:

    • 谢谢;正如在 Slack 中所讨论的,对于后代来说,这与knownObjects 不是nil 但返回(有效)一组空的已知对象的情况不同。在这种情况下,这个空集被认为是它的权威答案。另一方面,nilknownObjects 被解释为调用者对跟踪此类事情不感兴趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2017-01-23
    • 1970-01-01
    • 2019-05-22
    • 2021-04-03
    • 1970-01-01
    • 2015-04-04
    相关资源
    最近更新 更多