-
Notifications
You must be signed in to change notification settings - Fork 594
Prevent concurrent topology parallelism changes #1353
Comments
Approach 1 - local lock with current packing plan comparison
Approach 2 - local lock with update request versioningThis approach is similar to approach 1, except an atomically incremented request id is used instead of the current packing plan comparison.
|
@billonahill I prefer the second approach since it allows us to do some ordering in the update requests if needed. So the update topology manager can detect if a particular request is out of order (the current updateRequestId is much greater than the previous one it processed). I'm not sure if this is useful though. Just thinking. |
If we don't need to keep track of the last successfully handled updateRequestId that simplifies things, so I was thinking that if we're not handling the current updateRequestId in state manager, we fail. It's more aggressive in that we might fail even when handling the "next in line", but it's simple to implement and rationalize. Also it's easy to recover from with another request. Since these ids are numerically increasing it's tempting to use them to infer ordering, but I recommend we use them just as atomic optimistic locks on the request/response cycle. If that's the case, it really does make approach 1 and 2 similar, except that 2 requires additional state storage. |
We need a way to assure that multiple scaling events don't collide.
Related to #1292.
The text was updated successfully, but these errors were encountered: