-
Notifications
You must be signed in to change notification settings - Fork 238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for WatchProgressRequest #268
Conversation
@brandond Bad news, it does not work in my e2e test environment. |
Are you able to run Kine in debug mode, and share the results? |
My e2e test doesn't work with real etcd as backend storage either. I am so confused now. @onprem can you share the settings of apiserver? |
FYI, the related issue has been reported in k&k. |
I commented on the Kubernetes issue you linked, but I think the behavior you're expecting was incorrect and is no longer observed by v1.27+ |
Hmm. If I add info-level logging on progress requests in kine, I see that they are CONSTANTLY being spammed by the apiserver. I also note that things seem to take way longer to start up when the featuregate is enabled. This feels pretty broken at the moment, and I don't think it is etcd or kine - I think the feature does not work properly. |
Also fixes progress notifications to be more reliable Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
5cab6d2
to
04e0f5a
Compare
@brandond unfortunately, it doesn't work, but same test case works for etcd with special flag |
Is your test case just the previously discussed curl request, or do you have something else that you can share? |
Oh, I see from the upstream k/k issue that it must be set to 5 seconds instead of the default 10 minutes, for the Kubernetes feature to work. I didn't see that documented anywhere; let me take a look at making that configurable in kine. |
@qwtsc please try with the most recent commit, using the new CLI flag |
Something like curl, but it's written in golang.
let's try. BTW, you're so hard working, I've noticed progress in this PR almost every six hours. Do you ever take time to rest?:-) |
We have had a weeklong ice storm and my kids are out of school, so I don't have much else to do lol |
Cheers, now It works smoothly. Thanks for your impressive contribution. @brandond |
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
2d52922
to
bffa8c9
Compare
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
Adds support for watch progress requests.
If all channels are synced, sends the current revision using channel -1. This allows the watch client to determine the datastore's current revision on-demand in between progress report intervals.
This matches the implementation from upstream etcd:
For:
WatchRequest_ProgressRequest
message #267Make progress report notification interval configurable.
Required by kubernetes as per Watch-List feature does not work as expected when ResourceVersion is not set. kubernetes/kubernetes#122805 (comment)
Optimize CurrentRevision checks by sharing current revision marker from poll loop
Progress notifications query the current revision frequently; this can be optimized by exposing the poll loop's current revision once the loop has been started.