[VOL-4381] Fix missing device unlock in the core when invoking
some image request. Also fixes a unit test issue.
Change-Id: I8afa4b4cb641509340e912d4f14ea93815135f71
diff --git a/rw_core/core/device/agent_image.go b/rw_core/core/device/agent_image.go
index 0fda20e..2fa8dac 100644
--- a/rw_core/core/device/agent_image.go
+++ b/rw_core/core/device/agent_image.go
@@ -358,10 +358,10 @@
if err := agent.requestQueue.WaitForGreenLight(ctx); err != nil {
return nil, err
}
- defer agent.requestQueue.RequestComplete()
device := agent.getDeviceReadOnlyWithoutLock()
if !agent.proceedWithRequest(device) {
+ agent.requestQueue.RequestComplete()
return nil, status.Errorf(codes.FailedPrecondition, "%s", "cannot complete operation as device deletion is in progress or reconciling is in progress/failed")
}
@@ -375,8 +375,10 @@
"device-type": agent.deviceType,
"adapter-endpoint": device.AdapterEndpoint,
})
+ agent.requestQueue.RequestComplete()
return nil, err
}
+ agent.requestQueue.RequestComplete()
return client.GetImageDownloadStatus(ctx, &ic.ImageDownloadMessage{
Device: device,
Image: img,
@@ -644,6 +646,7 @@
defer cancel()
subCtx = coreutils.WithRPCMetadataFromContext(subCtx, ctx)
+ agent.requestQueue.RequestComplete()
return client.GetOnuImageStatus(subCtx, request)
}
@@ -715,7 +718,6 @@
subCtx = coreutils.WithRPCMetadataFromContext(subCtx, ctx)
agent.requestQueue.RequestComplete()
-
return client.AbortOnuImageUpgrade(subCtx, request)
}
@@ -750,6 +752,7 @@
defer cancel()
subCtx = coreutils.WithRPCMetadataFromContext(subCtx, ctx)
+ agent.requestQueue.RequestComplete()
return client.CommitOnuImage(subCtx, request)
}