@@ -340,29 +340,25 @@ func (ps *PluginServer) GetPreferredAllocation(context.Context, *v1beta1.Preferr
340340
341341func (ps * PluginServer ) Allocate (ctx context.Context , reqs * v1beta1.AllocateRequest ) (* v1beta1.AllocateResponse , error ) {
342342 klog .V (5 ).Infof ("Allocate: %v" , reqs )
343+ success := false
344+ var pod * v1.Pod
345+ defer func () {
346+ lockerr := nodelock .ReleaseNodeLock (ps .nodeName , NodeLockAscend , pod , success )
347+ if lockerr != nil {
348+ klog .Errorf ("failed to release lock:%s" , lockerr .Error ())
349+ }
350+ }()
343351 pod , err := util .GetPendingPod (ctx , ps .nodeName )
344352 if err != nil {
345353 klog .Errorf ("get pending pod error: %v" , err )
346- lockerr := nodelock .ReleaseNodeLock (ps .nodeName , NodeLockAscend , pod , false )
347- if lockerr != nil {
348- klog .Errorf ("failed to release lock:%s" , err .Error ())
349- }
350354 return nil , fmt .Errorf ("get pending pod error: %v" , err )
351355 }
352356 resp := v1beta1.ContainerAllocateResponse {}
353357 IDs , temps , err := ps .parsePodAnnotation (pod )
354358 if err != nil {
355- lockerr := nodelock .ReleaseNodeLock (ps .nodeName , NodeLockAscend , pod , false )
356- if lockerr != nil {
357- klog .Errorf ("failed to release lock:%s" , err .Error ())
358- }
359359 return nil , fmt .Errorf ("parse pod annotation error: %v" , err )
360360 }
361361 if len (IDs ) == 0 {
362- lockerr := nodelock .ReleaseNodeLock (ps .nodeName , NodeLockAscend , pod , false )
363- if lockerr != nil {
364- klog .Errorf ("failed to release lock:%s" , err .Error ())
365- }
366362 return nil , fmt .Errorf ("empty id from pod annotation" )
367363 }
368364 ascendVisibleDevices := fmt .Sprintf ("%d" , IDs [0 ])
@@ -382,10 +378,7 @@ func (ps *PluginServer) Allocate(ctx context.Context, reqs *v1beta1.AllocateRequ
382378 resp .Envs ["ASCEND_VNPU_SPECS" ] = ascendVNPUSpec
383379 }
384380 klog .V (5 ).Infof ("allocate response: %v" , resp )
385- lockerr := nodelock .ReleaseNodeLock (ps .nodeName , NodeLockAscend , pod , true )
386- if lockerr != nil {
387- klog .Errorf ("failed to release lock:%s" , err .Error ())
388- }
381+ success = true
389382 return & v1beta1.AllocateResponse {ContainerResponses : []* v1beta1.ContainerAllocateResponse {& resp }}, nil
390383}
391384
0 commit comments