You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow setting shorter watch timeout for the firt time alone.
What this PR does / why we need it:
We have seen in some evnironments (where requests are tunnelled) setting up the (first) watch is blocking if there are no resources available to watch. This causes the apply loop to be blocked when setting up watches before apply.
log.WithValues("kind", w.GVK.String()).WithValues("namespace", w.FilterNamespace).WithValues("labels", options.LabelSelector).Info("no activity seen for a while, cancelling watch")
180
+
cancel()
181
+
return
182
+
}
183
+
sawActivity.Store(false)
184
+
}
185
+
}
186
+
}()
187
+
188
+
events, err:=w.resource.Watch(ctx, options)
189
+
// If the Watch() call doesnt return, this would not be set to true thereby causing the timer to cancle the watch() context
190
+
// We have seen cases where a proxy in between causes the first watch to hang if there were no matching objects to return
191
+
sawActivity.Store(true)
192
+
148
193
ifwatchStarted!=nil {
149
194
watchStarted.Done()
150
195
}
@@ -159,6 +204,7 @@ func (w *dynamicKindWatch) watchUntilClosed(ctx context.Context, eventTarget met
0 commit comments