-
Notifications
You must be signed in to change notification settings - Fork 27
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
neonvm-controller: make IPAM code production-ready #1278
Conversation
No changes to the coverage.
HTML Report |
I haven't gone into the changes in depth, but I just want to ask what issues are being addressed? |
Key issues are:
Plus a few other things. |
49ef878
to
382bcfa
Compare
e675b7b
to
ffed348
Compare
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.
Partial review, just skimming through -- broadly looks good, need to dig a little deeper into the new core of the ipam actions.
One thing that I'm not sure about: What happens if we get a lot of reconcile operations simultaneously waiting on ipam operations? Should we have some mechanism to immediately bail if there's too many other threads also waiting? (so that, under load, other operations don't completely grind to a halt as well)
185af9f
to
0176fbe
Compare
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.
Applied suggestions from Em
(assigned you for now @Omrigan, please feel free to assign back to me after resolving comments if you think it's ready for another round of review) |
b7c36e5
to
0b620bd
Compare
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.
More thorough review, lots of comments -- broadly looks ok. If there's smaller commits that I haven't commented on, I'm happy to approve them separately if that would help (reducing surface area of the diff, etc.)
Leader election is too heavy to run it on every IP allocation. We can achieve the same with a leader election on neonvm-controller + a local mutex. Signed-off-by: Oleg Vasilev <[email protected]>
We must not leak IP addresses. The release will be retried. Also, we have to make it idempotent. Signed-off-by: Oleg Vasilev <[email protected]>
We must not leak IP addresses. The release will be retried. Also, we have to make it idempotent. Signed-off-by: Oleg Vasilev <[email protected]>
Leader election is too heavy to run it on every IP allocation. We can achieve the same with a leader election on neonvm-controller + a local mutex. Signed-off-by: Oleg Vasilev <[email protected]>
We will know if it is broken when we try to use it. Signed-off-by: Oleg Vasilev <[email protected]>
Non-functional change. Signed-off-by: Oleg Vasilev <[email protected]>
Two things: 1. Use NamespacedName. 2. Make the loop less verbose Signed-off-by: Oleg Vasilev <[email protected]>
This supresses the following warning, which would be introduced by the next commit: exitAfterDefer: os.Exit will exit, and `defer ipam.Close()` will not run Signed-off-by: Oleg Vasilev <[email protected]>
There is no need to create it for every request. Signed-off-by: Oleg Vasilev <[email protected]>
Non-functional change. Preparation to have a cleanup action. Signed-off-by: Oleg Vasilev <[email protected]>
Signed-off-by: Oleg Vasilev <[email protected]>
The previous version is marked deprecated. Signed-off-by: Oleg Vasilev <[email protected]>
Otherwise all reconcilliation workers can be stuck Signed-off-by: Oleg Vasilev <[email protected]>
We must not leak IP addresses. The release will be retried. Also, we have to make it idempotent. Signed-off-by: Oleg Vasilev <[email protected]>
Leader election is too heavy to run it on every IP allocation. We can achieve the same with a leader election on neonvm-controller + a local mutex. Signed-off-by: Oleg Vasilev <[email protected]>
We will know if it is broken when we try to use it. Signed-off-by: Oleg Vasilev <[email protected]>
Non-functional change. Signed-off-by: Oleg Vasilev <[email protected]>
Two things: 1. Use NamespacedName. 2. Make the loop less verbose Signed-off-by: Oleg Vasilev <[email protected]>
This supresses the following warning, which would be introduced by the next commit: exitAfterDefer: os.Exit will exit, and `defer ipam.Close()` will not run Signed-off-by: Oleg Vasilev <[email protected]>
There is no need to create it for every request. Signed-off-by: Oleg Vasilev <[email protected]>
Non-functional change. Preparation to have a cleanup action. Signed-off-by: Oleg Vasilev <[email protected]>
Signed-off-by: Oleg Vasilev <[email protected]>
The previous version is marked deprecated. Signed-off-by: Oleg Vasilev <[email protected]>
Otherwise all reconcilliation workers can be stuck Signed-off-by: Oleg Vasilev <[email protected]>
Split into commits, to be merged with rebase.
Fixes #1281