Skip to content

Commit 9842c53

Browse files
authored
Merge pull request kubeedge#1884 from XJangel/mapwrite
Add RWMutex for podLastSyncTime map
2 parents 1c96614 + 29d2467 commit 9842c53

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

edge/pkg/edged/edged.go

+8-5
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ type edged struct {
240240
dockerLegacyService dockershim.DockerLegacyService
241241
// Optional, defaults to simple Docker implementation
242242
runner kubecontainer.ContainerCommandRunner
243-
podLastSyncTime map[types.UID]time.Time
243+
podLastSyncTime sync.Map
244244
}
245245

246246
// Register register edged
@@ -420,7 +420,6 @@ func newEdged(enable bool) (*edged, error) {
420420
nodeIP: net.ParseIP(edgedconfig.Config.NodeIP),
421421
recorder: recorder,
422422
enable: enable,
423-
podLastSyncTime: make(map[types.UID]time.Time),
424423
}
425424

426425
err := ed.makePodDir()
@@ -913,13 +912,17 @@ func (e *edged) consumePodAddition(namespacedName *types.NamespacedName) error {
913912
}
914913

915914
podUID := pod.GetUID()
916-
curPodStatus, err := e.podCache.GetNewerThan(podUID, e.podLastSyncTime[podUID])
915+
t, ok := e.podLastSyncTime.Load(podUID)
916+
if !ok {
917+
t = time.Time{}
918+
}
919+
curPodStatus, err := e.podCache.GetNewerThan(podUID, t.(time.Time))
917920
if err != nil {
918921
klog.Errorf("pod %s cache newer failed: %v", podName, err)
919922
return err
920923
}
921924
result := e.containerRuntime.SyncPod(pod, curPodStatus, secrets, e.podAdditionBackoff)
922-
e.podLastSyncTime[podUID] = time.Now()
925+
e.podLastSyncTime.Store(podUID, time.Now())
923926
if err := result.Error(); err != nil {
924927
// Do not return error if the only failures were pods in backoff
925928
for _, r := range result.SyncResults {
@@ -952,7 +955,7 @@ func (e *edged) consumePodDeletion(namespacedName *types.NamespacedName) error {
952955
return err
953956
}
954957

955-
delete(e.podLastSyncTime, pod.GetUID())
958+
e.podLastSyncTime.Delete(pod.GetUID())
956959
err = e.containerRuntime.KillPod(pod, kubecontainer.ConvertPodStatusToRunningPod(e.containerRuntimeName, podStatus), nil)
957960
if err != nil {
958961
if err == apis.ErrContainerNotFound {

0 commit comments

Comments
 (0)