From 285e5a6d69f5707ae313c1ad2bbe37d2602ae01b Mon Sep 17 00:00:00 2001 From: Timofey Kirillov Date: Wed, 5 Apr 2023 20:23:28 +0300 Subject: [PATCH] fix(multiarch): managed images adding bug fix Bug was introduced after moving managed-images-adding procedure into AfterImages phase hook. Signed-off-by: Timofey Kirillov --- pkg/build/build_phase.go | 10 ++++------ pkg/build/conveyor.go | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/pkg/build/build_phase.go b/pkg/build/build_phase.go index 7d8a193d66..1302491add 100644 --- a/pkg/build/build_phase.go +++ b/pkg/build/build_phase.go @@ -81,10 +81,8 @@ type BuildPhase struct { BasePhase BuildPhaseOptions - StagesIterator *StagesIterator - ShouldAddManagedImageRecord bool - - ImagesReport *ImagesReport + StagesIterator *StagesIterator + ImagesReport *ImagesReport buildContextArchive container_backend.BuildContextArchiver } @@ -473,7 +471,7 @@ func (phase *BuildPhase) AfterImageStages(ctx context.Context, img *image.Image) } func (phase *BuildPhase) addManagedImage(ctx context.Context, name string) error { - if phase.ShouldAddManagedImageRecord { + if phase.Conveyor.ShouldAddManagedImagesRecords() { stagesStorage := phase.Conveyor.StorageManager.GetStagesStorage() exist, err := stagesStorage.IsManagedImageExist(ctx, phase.Conveyor.ProjectName(), name, storage.WithCache()) if err != nil { @@ -674,7 +672,7 @@ func (phase *BuildPhase) onImageStage(ctx context.Context, img *image.Image, stg } // Add managed image record only if there was at least one newly built stage - phase.ShouldAddManagedImageRecord = true + phase.Conveyor.SetShouldAddManagedImagesRecords() return nil } diff --git a/pkg/build/conveyor.go b/pkg/build/conveyor.go index 6be84b7d8a..dc436a6da0 100644 --- a/pkg/build/conveyor.go +++ b/pkg/build/conveyor.go @@ -45,6 +45,8 @@ type Conveyor struct { giterminismManager giterminism_manager.Interface remoteGitRepos map[string]*git_repo.Remote + shouldAddManagedImagesRecords bool + tmpDir string ContainerBackend container_backend.ContainerBackend @@ -337,6 +339,18 @@ func (c *Conveyor) GetRemoteGitRepo(key string) *git_repo.Remote { return c.remoteGitRepos[key] } +func (c *Conveyor) SetShouldAddManagedImagesRecords() { + c.GetServiceRWMutex("ShouldAddManagedImagesRecords").RLock() + defer c.GetServiceRWMutex("ShouldAddManagedImagesRecords").RUnlock() + c.shouldAddManagedImagesRecords = true +} + +func (c *Conveyor) ShouldAddManagedImagesRecords() bool { + c.GetServiceRWMutex("ShouldAddManagedImagesRecords").RLock() + defer c.GetServiceRWMutex("ShouldAddManagedImagesRecords").RUnlock() + return c.shouldAddManagedImagesRecords +} + type ShouldBeBuiltOptions struct { CustomTagFuncList []imagePkg.CustomTagFunc }