Skip to content

Commit d0623bd

Browse files
committed
fix: test + late release lock in handler
1 parent 15c488e commit d0623bd

File tree

5 files changed

+10
-13
lines changed

5 files changed

+10
-13
lines changed

backend/internal/api/handlers/deployment_handler.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,6 @@ func (h *DeploymentHandler) HandleDeployCluster(c *gin.Context) {
258258
wfUUID, wfStatus, err := h.svc.AsyncDeployCluster(config, cluster)
259259
if err != nil {
260260
reqLog.Error().Err(err).Msg("failed to start deployment workflow")
261-
err = h.locker.ReleaseLock(c.Request.Context(), nodeIDs, wfUUID)
262-
if err != nil {
263-
reqLog.Error().Err(err).Msg("failed to release nodes locks")
264-
}
265261
InternalServerError(c)
266262
return
267263
}
@@ -443,10 +439,6 @@ func (h *DeploymentHandler) HandleAddNode(c *gin.Context) {
443439
wfUUID, wfStatus, err := h.svc.AsyncAddNode(config, cl, cluster.Nodes[0])
444440
if err != nil {
445441
reqLog.Error().Err(err).Msg("failed to start add node workflow")
446-
err = h.locker.ReleaseLock(c.Request.Context(), []uint32{cluster.Nodes[0].NodeID}, wfUUID)
447-
if err != nil {
448-
reqLog.Error().Err(err).Msg("failed to release nodes locks")
449-
}
450442
InternalServerError(c)
451443
return
452444
}

backend/internal/api/handlers/node_handler.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,6 @@ func (h *NodeHandler) ReserveNodeHandler(c *gin.Context) {
310310
wfUUID, err := h.svc.AsyncReserveNode(userID, user.Mnemonic, nodeID)
311311
if err != nil {
312312
reqLog.Error().Err(err).Msg("failed to start workflow to reserve node")
313-
err = h.locker.ReleaseLock(c.Request.Context(), []uint32{nodeID}, wfUUID)
314-
if err != nil {
315-
reqLog.Error().Err(err).Msg("failed to release nodes locks")
316-
}
317313
InternalServerError(c)
318314
return
319315
}

backend/internal/core/distributed_locks/redis_locker_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ func TestRedisLocker_AcquireNodesLocks_NodeAlreadyLocked(t *testing.T) {
4747
err := locker.AcquireNodesLocks(context.Background(), []uint32{1, 2})
4848

4949
require.Error(t, err)
50-
require.Contains(t, err.Error(), "failed to acquire lock for key locked:2")
50+
require.ErrorIs(t, err, ErrNodeLocked)
51+
require.Contains(t, err.Error(), "locked:2")
5152
require.Equal(t, int64(0), client.Exists(context.Background(), "locked:1").Val(), "previous locks should be rolled back")
5253
}
5354

backend/internal/core/services/deployment_service.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,11 @@ func (svc *DeploymentService) handleDeploymentAction(userID int, workflowName st
244244
}
245245

246246
if err = svc.runWithQueue(queueName, &wf); err != nil {
247+
if len(nodeIDs) > 0 {
248+
if releaseErr := svc.locker.ReleaseLock(svc.appCtx, nodeIDs, wf.UUID); releaseErr != nil {
249+
err = fmt.Errorf("%w: failed to release workflow lock: %v", err, releaseErr)
250+
}
251+
}
247252
telemetry.RecordError(span, err)
248253
return "", "", err
249254
}

backend/internal/core/services/node_service.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,9 @@ func (svc *NodeService) AsyncReserveNode(userID int, userMnemonic string, nodeID
256256
}
257257

258258
if err = svc.runWithQueue(queueName, &wf); err != nil {
259+
if releaseErr := svc.locker.ReleaseLock(svc.appCtx, []uint32{nodeID}, wf.UUID); releaseErr != nil {
260+
err = fmt.Errorf("%w: failed to release workflow lock: %v", err, releaseErr)
261+
}
259262
return "", err
260263
}
261264

0 commit comments

Comments
 (0)