mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 18:31:15 +00:00
Merge pull request #108628 from RomanBednar/attach-detach-message
csi_attacher: improve attach/detach timeout message
This commit is contained in:
commit
aa343fa632
@ -133,7 +133,7 @@ func (c *csiAttacher) Attach(spec *volume.Spec, nodeName types.NodeName) (string
|
||||
|
||||
// Attach and detach functionality is exclusive to the CSI plugin that runs in the AttachDetachController,
|
||||
// and has access to a VolumeAttachment lister that can be polled for the current status.
|
||||
if err := c.waitForVolumeAttachmentWithLister(pvSrc.VolumeHandle, attachID, c.watchTimeout); err != nil {
|
||||
if err := c.waitForVolumeAttachmentWithLister(spec, pvSrc.VolumeHandle, attachID, c.watchTimeout); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
@ -178,7 +178,7 @@ func (c *csiAttacher) waitForVolumeAttachmentInternal(volumeHandle, attachID str
|
||||
return attach.Name, nil
|
||||
}
|
||||
|
||||
func (c *csiAttacher) waitForVolumeAttachmentWithLister(volumeHandle, attachID string, timeout time.Duration) error {
|
||||
func (c *csiAttacher) waitForVolumeAttachmentWithLister(spec *volume.Spec, volumeHandle, attachID string, timeout time.Duration) error {
|
||||
klog.V(4).Info(log("probing VolumeAttachment [id=%v]", attachID))
|
||||
|
||||
verifyStatus := func() (bool, error) {
|
||||
@ -201,7 +201,7 @@ func (c *csiAttacher) waitForVolumeAttachmentWithLister(volumeHandle, attachID s
|
||||
return successful, nil
|
||||
}
|
||||
|
||||
return c.waitForVolumeAttachDetachStatusWithLister(volumeHandle, attachID, timeout, verifyStatus, "Attach")
|
||||
return c.waitForVolumeAttachDetachStatusWithLister(spec, volumeHandle, attachID, timeout, verifyStatus, "Attach")
|
||||
}
|
||||
|
||||
func (c *csiAttacher) VolumesAreAttached(specs []*volume.Spec, nodeName types.NodeName) (map[*volume.Spec]bool, error) {
|
||||
@ -473,10 +473,10 @@ func (c *csiAttacher) waitForVolumeDetachmentWithLister(volumeHandle, attachID s
|
||||
return successful, nil
|
||||
}
|
||||
|
||||
return c.waitForVolumeAttachDetachStatusWithLister(volumeHandle, attachID, timeout, verifyStatus, "Detach")
|
||||
return c.waitForVolumeAttachDetachStatusWithLister(nil, volumeHandle, attachID, timeout, verifyStatus, "Detach")
|
||||
}
|
||||
|
||||
func (c *csiAttacher) waitForVolumeAttachDetachStatusWithLister(volumeHandle, attachID string, timeout time.Duration, verifyStatus func() (bool, error), operation string) error {
|
||||
func (c *csiAttacher) waitForVolumeAttachDetachStatusWithLister(spec *volume.Spec, volumeHandle, attachID string, timeout time.Duration, verifyStatus func() (bool, error), operation string) error {
|
||||
var (
|
||||
initBackoff = 500 * time.Millisecond
|
||||
// This is approximately the duration between consecutive ticks after two minutes (CSI timeout).
|
||||
@ -491,6 +491,13 @@ func (c *csiAttacher) waitForVolumeAttachDetachStatusWithLister(volumeHandle, at
|
||||
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
||||
defer cancel()
|
||||
|
||||
// Get driver name from spec for better log messages. During detach spec can be nil, and it's ok for driver to be unknown.
|
||||
csiDriverName, err := GetCSIDriverName(spec)
|
||||
if err != nil {
|
||||
csiDriverName = "unknown"
|
||||
klog.V(4).Info(log("Could not find CSI driver name in spec for volume [%v]", volumeHandle))
|
||||
}
|
||||
|
||||
for {
|
||||
t := backoffMgr.Backoff()
|
||||
select {
|
||||
@ -505,7 +512,7 @@ func (c *csiAttacher) waitForVolumeAttachDetachStatusWithLister(volumeHandle, at
|
||||
case <-ctx.Done():
|
||||
t.Stop()
|
||||
klog.Error(log("%s timeout after %v [volume=%v; attachment.ID=%v]", operation, timeout, volumeHandle, attachID))
|
||||
return fmt.Errorf("%s timeout for volume %v", operation, volumeHandle)
|
||||
return fmt.Errorf("timed out waiting for external-attacher of %v CSI driver to %v volume %v", csiDriverName, strings.ToLower(operation), volumeHandle)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user