From 52f4f6b25e56cb45e4772151fd5a5ec62bb21b34 Mon Sep 17 00:00:00 2001 From: Artem Muterko Date: Mon, 30 Mar 2026 15:09:35 +0200 Subject: [PATCH] Fix flaky TestBlocksCleaner by awaiting HeartBeat goroutine completion Signed-off-by: Artem Muterko --- pkg/compactor/blocks_cleaner.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/compactor/blocks_cleaner.go b/pkg/compactor/blocks_cleaner.go index 4a0e13c2018..cedd3211cb5 100644 --- a/pkg/compactor/blocks_cleaner.go +++ b/pkg/compactor/blocks_cleaner.go @@ -357,9 +357,14 @@ func (c *BlocksCleaner) cleanUpActiveUsers(ctx context.Context, users []string, return nil } errChan := make(chan error, 1) - go visitMarkerManager.HeartBeat(ctx, errChan, c.cleanerVisitMarkerFileUpdateInterval, true) + doneChan := make(chan struct{}) + go func() { + visitMarkerManager.HeartBeat(ctx, errChan, c.cleanerVisitMarkerFileUpdateInterval, true) + close(doneChan) + }() defer func() { errChan <- nil + <-doneChan }() return errors.Wrapf(c.cleanUser(ctx, userLogger, userBucket, userID, firstRun), "failed to delete blocks for user: %s", userID) }) @@ -392,9 +397,14 @@ func (c *BlocksCleaner) cleanDeletedUsers(ctx context.Context, users []string) e return nil } errChan := make(chan error, 1) - go visitMarkerManager.HeartBeat(ctx, errChan, c.cleanerVisitMarkerFileUpdateInterval, true) + doneChan := make(chan struct{}) + go func() { + visitMarkerManager.HeartBeat(ctx, errChan, c.cleanerVisitMarkerFileUpdateInterval, true) + close(doneChan) + }() defer func() { errChan <- nil + <-doneChan }() return errors.Wrapf(c.deleteUserMarkedForDeletion(ctx, userLogger, userBucket, userID), "failed to delete user marked for deletion: %s", userID) })