mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 01:40:13 +00:00
add lock in volume manager reconciler to avoid data race
Signed-off-by: Paco Xu <paco.xu@daocloud.io>
This commit is contained in:
parent
7afcfe1826
commit
5134520a3b
@ -18,6 +18,7 @@ package reconciler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
@ -139,10 +140,12 @@ type reconciler struct {
|
||||
volumePluginMgr *volumepkg.VolumePluginMgr
|
||||
skippedDuringReconstruction map[v1.UniqueVolumeName]*globalVolumeInfo
|
||||
kubeletPodsDir string
|
||||
timeOfLastSync time.Time
|
||||
volumesFailedReconstruction []podVolume
|
||||
volumesNeedDevicePath []v1.UniqueVolumeName
|
||||
volumesNeedReportedInUse []v1.UniqueVolumeName
|
||||
// lock protects timeOfLastSync for updating and checking
|
||||
timeOfLastSyncLock sync.Mutex
|
||||
timeOfLastSync time.Time
|
||||
volumesFailedReconstruction []podVolume
|
||||
volumesNeedDevicePath []v1.UniqueVolumeName
|
||||
volumesNeedReportedInUse []v1.UniqueVolumeName
|
||||
}
|
||||
|
||||
func (rc *reconciler) Run(stopCh <-chan struct{}) {
|
||||
|
@ -72,10 +72,14 @@ type globalVolumeInfo struct {
|
||||
}
|
||||
|
||||
func (rc *reconciler) updateLastSyncTime() {
|
||||
rc.timeOfLastSyncLock.Lock()
|
||||
defer rc.timeOfLastSyncLock.Unlock()
|
||||
rc.timeOfLastSync = time.Now()
|
||||
}
|
||||
|
||||
func (rc *reconciler) StatesHasBeenSynced() bool {
|
||||
rc.timeOfLastSyncLock.Lock()
|
||||
defer rc.timeOfLastSyncLock.Unlock()
|
||||
return !rc.timeOfLastSync.IsZero()
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user