-
Notifications
You must be signed in to change notification settings - Fork 382
Concurrent updates on Instance #1149
Comments
At the F2F we decided that we will block updates to an instance's spec while the controller is performing an operation on that instance. This probably won't bear out in the long-term as a valid approach but it is good enough to get us to an initial beta. |
Proposal
API Changestype ServiceInstanceStatus struct {
// other fields omitted
CurrentOperation *ServiceInstanceOperation `json:"currentOperation,omitempty"`
}
// ServiceInstanceOperation represents a type of operation the controller can
// be performing for a service instance in the OSB API.
type ServiceInstanceOperation string
const (
ServiceInstanceOperationProvision ServiceInstanceOperation = "Provision"
ServiceInstanceOperationUpdate ServiceInstanceOperation = "Update"
ServiceInstanceOperationDeprovision ServiceInstanceOperation = "Deprovision"
)
type ServiceInstanceCredentialStatus struct {
// other fields omitted
CurrentOperation *ServiceInstanceCredentialOperation `json:"currentOperation,omitempty"`
}
// ServiceInstanceCredentialOperation represents a type of operation
// the controller can be performing for a binding in the OSB API.
type ServiceInstanceCredentialOperation string
const (
ServiceInstanceCredentialOperationBind ServiceInstanceCredentialOperation = "Bind"
ServiceInstanceCredentialOperationUnbind ServiceInstanceCredentialOperation = "Unbind"
) |
overall seems good but I think there's a race condition. Setting the op should happen immediately update the Spec being changed if the op flag is the blocker for not doing concurrent updates. Or, make the blocker be Generation != ReconciledGeneration. Otherwise 2 updates can happen before the controller sets the op flag. |
@duglin I had a parse error reading your comment, but as we discussed in the meeting, the criteria for blocking updates can be |
…ceCredential (#1213) * Block operations on Instance and Binding when Controller is already performing operation * code review feedback
We need to discuss how we're going to deal with concurrent updates on things like Instances. For example, while we're creating and Instance if one person updates the Plan and one person updates the Params we're going to need to send 2 different requests to the broker because they might be two different users. How are we going to deal with this? Queue requests? Block current updates? others?
The text was updated successfully, but these errors were encountered: