Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix a idempotency issues in CreateVolume
In case creating a new volume takes longer than the GRPC timeout, the provisioner could get in a state where volumes are considered ready even if no resource was ever created. This commit fixes this issue by ensuring that volumes are only considered ready after the expected amount of volumes was placed. The bug happened in cases where: * Create() succesfully called saveVolume(), persisting the volume information as annotations, which is interpreted as "ready" resources * Immediatly after, the GRPC timeout cancels the request context, meaning the volume scheduler aborted before any resources could be assigned to nodes A simple reording of "volumeScheduler.Create()" and "saveVolume()" would lead to a different issue, in which continously more volumes are placed but never marked as ready. To prevent this, volumes that reference at least the number of resources as required by the parameters are considered ready. Note that this is a stopgap solution until volume schedulers are re-written to be idempotent themselves.
- Loading branch information