Как избежать вызова `updateFunc` при синхронизации? - PullRequest
0 голосов
/ 16 декабря 2018

Из того, что я понимаю (и из опыта) - информаторы kubernetes называют updateFunc каждое событие "синхронизации" своего кеша - из того, что я понял, это из-за этого раздражающего спокойствия кода.

Пример определения информера:

informer:= NewInformer(
&cache.ListWatch{
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
  return kubeClient.Batch().Jobs(api.NamespaceAll).List(options)
},
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
  return kubeClient.Batch().Jobs(api.NamespaceAll).Watch(options)
},....)

...

informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
    AddFunc: func(obj interface{}){},
    // Make this function be called *only* on update. 
    UpdateFunc: func(old, current interface{}){},
    DeleteFunc: func(current interface{}){},
})

Но для моего случая использования - вызов updateFunc действительно должен происходить только при обновлении этого ресурса (например, я выполняю некоторые интенсивные вычисления для каждого обновления или собираюсьI / O).

Я бродил, есть ли способ позвонить updateFunc только при обновлении?

1 Ответ

0 голосов
/ 16 декабря 2018

Я нашел ответ в этой проблеме github :

Если resourceVersion отличается между старым и новым, фактическое событие обновления наблюдалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...