mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-25 11:31:44 +00:00
Merge pull request #116739 from moshe010/clone-cdi-devices
kubelet dra: lock before getting claimInfo CDIDevices and annotations fields
This commit is contained in:
commit
7581ae8123
@ -978,6 +978,7 @@ func (cm *containerManagerImpl) GetDynamicResources(pod *v1.Pod, container *v1.C
|
||||
}
|
||||
for _, containerClaimInfo := range containerClaimInfos {
|
||||
var claimResources []*podresourcesapi.ClaimResource
|
||||
containerClaimInfo.RLock()
|
||||
// TODO: Currently we maintain a list of ClaimResources, each of which contains
|
||||
// a set of CDIDevices from a different kubelet plugin. In the future we may want to
|
||||
// include the name of the kubelet plugin and/or other types of resources that are
|
||||
@ -989,6 +990,7 @@ func (cm *containerManagerImpl) GetDynamicResources(pod *v1.Pod, container *v1.C
|
||||
}
|
||||
claimResources = append(claimResources, &podresourcesapi.ClaimResource{CDIDevices: cdiDevices})
|
||||
}
|
||||
containerClaimInfo.RUnlock()
|
||||
containerDynamicResource := podresourcesapi.DynamicResource{
|
||||
ClassName: containerClaimInfo.ClassName,
|
||||
ClaimName: containerClaimInfo.ClaimName,
|
||||
|
@ -233,6 +233,7 @@ func (m *ManagerImpl) GetResources(pod *v1.Pod, container *v1.Container) (*Conta
|
||||
return nil, fmt.Errorf("unable to get resource for namespace: %s, claim: %s", pod.Namespace, claimName)
|
||||
}
|
||||
|
||||
claimInfo.RLock()
|
||||
klog.V(3).InfoS("Add resource annotations", "claim", claimName, "annotations", claimInfo.annotations)
|
||||
annotations = append(annotations, claimInfo.annotations...)
|
||||
for _, devices := range claimInfo.CDIDevices {
|
||||
@ -240,6 +241,7 @@ func (m *ManagerImpl) GetResources(pod *v1.Pod, container *v1.Container) (*Conta
|
||||
cdiDevices = append(cdiDevices, kubecontainer.CDIDevice{Name: device})
|
||||
}
|
||||
}
|
||||
claimInfo.RUnlock()
|
||||
}
|
||||
}
|
||||
|
||||
@ -313,8 +315,8 @@ func (m *ManagerImpl) UnprepareResources(pod *v1.Pod) error {
|
||||
resourceHandle.Data)
|
||||
if err != nil {
|
||||
return fmt.Errorf(
|
||||
"NodeUnprepareResource failed, pod: %s, claim UID: %s, claim name: %s, CDI devices: %s, err: %+v",
|
||||
pod.Name, claimInfo.ClaimUID, claimInfo.ClaimName, claimInfo.CDIDevices, err)
|
||||
"NodeUnprepareResource failed, pod: %s, claim UID: %s, claim name: %s, resource handle: %s, err: %+v",
|
||||
pod.Name, claimInfo.ClaimUID, claimInfo.ClaimName, resourceHandle.Data, err)
|
||||
}
|
||||
klog.V(3).InfoS("NodeUnprepareResource succeeded", "response", response)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user