-
Notifications
You must be signed in to change notification settings - Fork 188
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
Uncertain handling for attach #400
Comments
IIRC, the external-attacher always calls It could be possible to optimize and mark attachments as "not attached" after a final |
I agree it sounds like it should not cause problems, but one could imagine that some plugin depends on the current Kubernetes behavior to avoid leaking resources. My reading of the spec on the requirements for the CO are ambiguous in this area. There is a lot of "the CO may choose to" language that suggests the CO has little if any obligation here. |
The main challenge is that the current behavior relies on the plugin to potentially keep state about pending attaches requests, which may be difficult. You can have a sequence like:
Some ways that a plugin could address this are:
However, keeping track of pending operations may be difficult. For example, in GCP, operation metadata only provides the instance id, not the disk id. So the CSI driver would have to potentially 1) serialize operations per instance, which would not be good for performance or 2) cache operations in memory and only serialize on restart 3) keep operations state in some CRD |
For reference, here is a prototype of adding operation caching in the GCP driver: kubernetes-sigs/gcp-compute-persistent-disk-csi-driver#923 |
Discussed at the triage meeting. We'll work on a design that is similar to how provisioner works and the attach/detach operations will be synchronized with an operations cache. |
/priority important-soon |
/triage accepted |
I will work on this issue, unable to assign to myself. |
This issue is labeled with You can:
For more details on the triage process, see https://www.kubernetes.dev/docs/guide/issue-triage/ /remove-triage accepted |
/priority important-longterm |
This issue is labeled with You can:
For more details on the triage process, see https://www.kubernetes.dev/docs/guide/issue-triage/ /remove-triage accepted |
/priority important-longterm |
This issue is labeled with You can:
For more details on the triage process, see https://www.kubernetes.dev/docs/guide/issue-triage/ /remove-triage accepted |
/remove-priority important-soon |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
It looks like we check for finalError on
ControllerPublishVolume
:external-attacher/pkg/attacher/attacher.go
Line 70 in c4cfca3
But we ignore it later on:
external-attacher/pkg/controller/csi_handler.go
Line 513 in c4cfca3
And we rely on the driver's implementation of
ControllerUnpublishVolume
to be able to properly detect if there is still an attach operation in progress.This is different than how we handle other uncertain states for volume operations like provision and mount. Should we consider adding uncertain handling for attach?
The text was updated successfully, but these errors were encountered: