fix(edgestacks): fix a deadlock in UpdateEdgeStackFunc() (#8735)

pull/8738/head
andres-portainer 2023-04-03 14:24:27 -03:00 committed by GitHub
parent feab2a757e
commit 1a451823d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 13 deletions

View File

@ -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.