From 1a451823d9473aa69aafd3c1c71b39881df4dd64 Mon Sep 17 00:00:00 2001 From: andres-portainer <91705312+andres-portainer@users.noreply.github.com> Date: Mon, 3 Apr 2023 14:24:27 -0300 Subject: [PATCH] fix(edgestacks): fix a deadlock in UpdateEdgeStackFunc() (#8735) --- api/dataservices/edgestack/tx.go | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/api/dataservices/edgestack/tx.go b/api/dataservices/edgestack/tx.go index 35301406d..1a1d3681a 100644 --- a/api/dataservices/edgestack/tx.go +++ b/api/dataservices/edgestack/tx.go @@ -100,11 +100,8 @@ func (service ServiceTx) UpdateEdgeStack(ID portainer.EdgeStackID, edgeStack *po return nil } -// UpdateEdgeStackFunc is a no-op inside a transaction. +// Deprecated: use UpdateEdgeStack inside a transaction instead. func (service ServiceTx) UpdateEdgeStackFunc(ID portainer.EdgeStackID, updateFunc func(edgeStack *portainer.EdgeStack)) error { - service.service.mu.Lock() - defer service.service.mu.Unlock() - edgeStack, err := service.EdgeStack(ID) if err != nil { return err @@ -112,15 +109,7 @@ func (service ServiceTx) UpdateEdgeStackFunc(ID portainer.EdgeStackID, updateFun updateFunc(edgeStack) - err = service.UpdateEdgeStack(ID, edgeStack) - if err != nil { - return err - } - - service.service.idxVersion[ID] = edgeStack.Version - service.service.cacheInvalidationFn(ID) - - return nil + return service.UpdateEdgeStack(ID, edgeStack) } // DeleteEdgeStack deletes an Edge stack.