-
Notifications
You must be signed in to change notification settings - Fork 40.3k
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
Updates Kubelet Plugin Registration process #114136
Conversation
Please note that we're already in Test Freeze for the Fast forwards are scheduled to happen every 6 hours, whereas the most recent run was: Fri Nov 25 09:34:34 UTC 2022. |
1f69fee
to
c6702ab
Compare
/triage accepted |
/assign |
/test pull-ci-kubernetes-unit-windows |
@SergeyKanzhelev, have you had a change to review this? |
/sig-storage |
/sig storage |
/assign @saad-ali |
@SergeyKanzhelev, did you have a chance to look over this? |
clear the milestone as it has no update for week. |
be5921c
to
b0a6fe3
Compare
7e2c1b2
to
e215d29
Compare
/test pull-ci-kubernetes-unit-windows |
Currently, when a Kubelet Plugin is being added in the DesiredStateOfWorld, a timestamp is saved in the PluginInfo. This timestamp is then updated on subsequent plugin reregistrations. The Reconciler, when it detects different timestamps for a Plugin in its DesiredStateOfWorld and ActualStateOfWorld, it will then trigger a Plugin unregister and then a new Plugin registration. Basically, the timestamp is being used to detect whether or not a Plugin needs to be reregistered or not. However, this can be an issue on Windows, where the time measurements are not as fine-grained. time.Now() calls within the same ~1-15ms window will have the same timestamp. This can mean that Plugin Reregistration events can be missed on Windows [1]. Because of this, some of the Plugin registration unit tests fail on Windows. This commit updates the behaviour, instead of relying on different timestamps, the Reconciler will check the set PluginInfo UUID to detect a Plugin Reregistration. With this change, the unit tests mentioned above will also pass on Windows. [1] golang/go#8687
Co-authored-by: Sergey Kanzhelev <[email protected]>
e215d29
to
2604d7d
Compare
/test pull-ci-kubernetes-unit-windows |
1 similar comment
/test pull-ci-kubernetes-unit-windows |
Hello @claudiubelu ! This PR has not been updated for a long time, so I'd like to check what's the status. The code freeze is starting As the PR is tagged for |
Hasn't been updated because I got no reviews. Waiting for those. FWIW, it seems the unit tests are passing on Windows as well. |
Hello @claudiubelu, This PR hasn't been updated in a while. What's the current status? Do you want us to reach out to the folks who are supposed to review this? Reminder: Code freeze starts |
/milestone clear |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
/approve
LGTM label has been added. Git tree hash: 2d53f15313565741c0b29f20e6b17d6202bfe688
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: claudiubelu, SergeyKanzhelev The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@claudiubelu: The following test failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
What type of PR is this?
/kind failing-test
/kind bug
/sig windows
/sig testing
/priority important-soon
/milestone v1.27
What this PR does / why we need it:
Currently, when a Kubelet Plugin is being added in the DesiredStateOfWorld, a timestamp is saved in the PluginInfo. This timestamp is then updated on subsequent plugin reregistrations.
The Reconciler, when it detects different timestamps for a Plugin in its DesiredStateOfWorld and ActualStateOfWorld, it will then trigger a Plugin unregister and then a new Plugin registration.
Basically, the timestamp is being used to detect whether or not a Plugin needs to be reregistered or not. However, this can be an issue on Windows, where the time measurements are not as fine-grained. time.Now() calls within the same ~1-15ms window will have the same timestamp. This can mean that Plugin Reregistration events can be missed on Windows [1]. Because of this, some of the Plugin registration unit tests fail on Windows.
This commit updates the behaviour, instead of relying on different timestamps, the Reconciler will check the set PluginInfo UUID to detect a Plugin Reregistration. With this change, the unit tests mentioned above will also pass on Windows.
[1] golang/go#8687
Which issue(s) this PR fixes:
Related: #51540
Special notes for your reviewer:
Does this PR introduce a user-facing change?
Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.: