From 9fc992ea3ee566646a1d4afffc89deca79d4315d Mon Sep 17 00:00:00 2001 From: Somefive Date: Sun, 27 Mar 2022 19:56:25 +0800 Subject: [PATCH] Fix: concurrent write to controller revision (#3520) Signed-off-by: Somefive --- pkg/resourcekeeper/componentrevision.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/resourcekeeper/componentrevision.go b/pkg/resourcekeeper/componentrevision.go index cdc0acc27..204cf878a 100644 --- a/pkg/resourcekeeper/componentrevision.go +++ b/pkg/resourcekeeper/componentrevision.go @@ -31,6 +31,8 @@ import ( // DispatchComponentRevision create component revision (also add record in resourcetracker) func (h *resourceKeeper) DispatchComponentRevision(ctx context.Context, cr *v1.ControllerRevision) error { + h.mu.Lock() + defer h.mu.Unlock() rt, err := h.getComponentRevisionRT(ctx) if err != nil { return errors.Wrapf(err, "failed to get resourcetracker") @@ -50,6 +52,8 @@ func (h *resourceKeeper) DispatchComponentRevision(ctx context.Context, cr *v1.C // DeleteComponentRevision delete component revision (also remove record in resourcetracker) func (h *resourceKeeper) DeleteComponentRevision(ctx context.Context, cr *v1.ControllerRevision) error { + h.mu.Lock() + defer h.mu.Unlock() rt, err := h.getComponentRevisionRT(ctx) if err != nil { return errors.Wrapf(err, "failed to get resourcetracker")