Dedupe logging for PD SetUpAt and added a slow SetVolumeOwnership warning

This commit is contained in:
David Zhu 2019-10-02 16:21:52 -07:00
parent 0960c74c37
commit 223ef76db5
2 changed files with 14 additions and 17 deletions

View File

@ -382,8 +382,7 @@ func (b *gcePersistentDiskMounter) SetUpAt(dir string, mounterArgs volume.Mounte
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir) notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
klog.V(4).Infof("GCE PersistentDisk set up: Dir (%s) PD name (%q) Mounted (%t) Error (%v), ReadOnly (%t)", dir, b.pdName, !notMnt, err, b.readOnly) klog.V(4).Infof("GCE PersistentDisk set up: Dir (%s) PD name (%q) Mounted (%t) Error (%v), ReadOnly (%t)", dir, b.pdName, !notMnt, err, b.readOnly)
if err != nil && !os.IsNotExist(err) { if err != nil && !os.IsNotExist(err) {
klog.Errorf("cannot validate mount point: %s %v", dir, err) return fmt.Errorf("cannot validate mount point: %s %v", dir, err)
return err
} }
if !notMnt { if !notMnt {
return nil return nil
@ -392,8 +391,7 @@ func (b *gcePersistentDiskMounter) SetUpAt(dir string, mounterArgs volume.Mounte
if runtime.GOOS != "windows" { if runtime.GOOS != "windows" {
// in windows, we will use mklink to mount, will MkdirAll in Mount func // in windows, we will use mklink to mount, will MkdirAll in Mount func
if err := os.MkdirAll(dir, 0750); err != nil { if err := os.MkdirAll(dir, 0750); err != nil {
klog.Errorf("mkdir failed on disk %s (%v)", dir, err) return fmt.Errorf("mkdir failed on disk %s (%v)", dir, err)
return err
} }
} }
@ -412,35 +410,32 @@ func (b *gcePersistentDiskMounter) SetUpAt(dir string, mounterArgs volume.Mounte
if err != nil { if err != nil {
notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir) notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir)
if mntErr != nil { if mntErr != nil {
klog.Errorf("IsLikelyNotMountPoint check failed: %v", mntErr) return fmt.Errorf("failed to mount: %v. Cleanup IsLikelyNotMountPoint check failed: %v", err, mntErr)
return err
} }
if !notMnt { if !notMnt {
if mntErr = b.mounter.Unmount(dir); mntErr != nil { if mntErr = b.mounter.Unmount(dir); mntErr != nil {
klog.Errorf("Failed to unmount: %v", mntErr) return fmt.Errorf("failed to mount: %v. Cleanup failed to unmount: %v", err, mntErr)
return err
} }
notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir) notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir)
if mntErr != nil { if mntErr != nil {
klog.Errorf("IsLikelyNotMountPoint check failed: %v", mntErr) return fmt.Errorf("failed to mount: %v. Cleanup IsLikelyNotMountPoint check failed: %v", err, mntErr)
return err
} }
if !notMnt { if !notMnt {
// This is very odd, we don't expect it. We'll try again next sync loop. // This is very odd, we don't expect it. We'll try again next sync loop.
klog.Errorf("%s is still mounted, despite call to unmount(). Will try again next sync loop.", dir) return fmt.Errorf("%s is still mounted, despite call to unmount(). Will try again next sync loop", dir)
return err
} }
} }
os.Remove(dir) mntErr = os.Remove(dir)
klog.Errorf("Mount of disk %s failed: %v", dir, err) if mntErr != nil {
return err return fmt.Errorf("failed to mount: %v. Cleanup os Remove(%s) failed: %v", err, dir, mntErr)
}
return fmt.Errorf("mount of disk %s failed: %v", dir, err)
} }
if !b.readOnly { if !b.readOnly {
volume.SetVolumeOwnership(b, mounterArgs.FsGroup) volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
} }
klog.V(4).Infof("Successfully mounted %s", dir)
return nil return nil
} }

View File

@ -42,6 +42,8 @@ func SetVolumeOwnership(mounter Mounter, fsGroup *int64) error {
return nil return nil
} }
klog.Warningf("Setting volume ownership for %s and fsGroup set. If the volume has a lot of files then setting volume ownership could be slow, see https://github.com/kubernetes/kubernetes/issues/69699", mounter.GetPath())
return filepath.Walk(mounter.GetPath(), func(path string, info os.FileInfo, err error) error { return filepath.Walk(mounter.GetPath(), func(path string, info os.FileInfo, err error) error {
if err != nil { if err != nil {
return err return err