-
Notifications
You must be signed in to change notification settings - Fork 372
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
ControllerUnpublishVolume should require "OK" when node/volume unpublished and get rid of "recoverable" NOT FOUND errors #382
Comments
/cc @saad-ali |
tldr; for 2.0 we have to make sure that we require SP to return OK for |
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Longhorn longhorn#347 Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Longhorn longhorn#347 Signed-off-by: Shuo Wu <shuo@rancher.com>
…tation Now the provisioner won't wait for Detach (ControllerUnpublishVolume()) complete before invoking DeleteVolume. Then Detach will get stuck in the NOT_FOUND error since there is no way to verify the volume before detaching. For the details, See container-storage-interface/spec#382 And the spec doc has removed NOT_FOUND error for ControllerUnpublishVolume(): https://github.com/container-storage-interface/spec/blob/release-1.2/spec.md#controllerunpublishvolume Longhorn #347 Signed-off-by: Shuo Wu <shuo@rancher.com>
This would be a breaking change and would require a major version bump of the spec but putting here as a backlog item.
NOT_FOUND
errors inControllerUnpublishVolume
are unrecoverable based on the current recovery behavior defined in the spec. The recovery behavior asks the caller to "verify ... the volume is accessible" which can only be verified through calling the driver. Currently the only call to find that isListVolumes
which is an optional capability. Therefore, aMUST
to verify the volume exist after this error is actually logically impossible.The driver is actually the one that can/should decide to return an
OK
code when the node/volume is unavailable and it can interpret it as the volume has been controllerunpublished. There should be no situation where an error occurs where the driver will returnNOT_FOUND
that could be recoverable by the caller - this is unless the caller got thevolume_id
wrong which I would argue should also be returned as anOK
just like the specification states forDeleteVolume
.The solution to the above problems is to amend the wording:
And remove the must/should recovery behavior from the two
NOT_FOUND
errors inControllerUnpublishVolume
and just cover it with a blanket retry.The implementation of the
external-attacher
for Kubernetes already does not do the recovery behaviors, and is in the process of releasing a new major version which treatsNOT_FOUND
errors as real errors that must be retried.The text was updated successfully, but these errors were encountered: