// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 package controller import ( "time" "git.arvados.org/arvados.git/lib/controller/dblock" "git.arvados.org/arvados.git/sdk/go/auth" "git.arvados.org/arvados.git/sdk/go/ctxlog" ) func (h *Handler) trashSweepWorker() { sleep := h.Cluster.Collections.TrashSweepInterval.Duration() logger := ctxlog.FromContext(h.BackgroundContext).WithField("worker", "trash sweep") ctx := ctxlog.Context(h.BackgroundContext, logger) if sleep <= 0 { logger.Debugf("Collections.TrashSweepInterval is %v, not running worker", sleep) return } dblock.TrashSweep.Lock(ctx, h.db) defer dblock.TrashSweep.Unlock() for time.Sleep(sleep); ctx.Err() == nil; time.Sleep(sleep) { dblock.TrashSweep.Check() ctx := auth.NewContext(ctx, &auth.Credentials{Tokens: []string{h.Cluster.SystemRootToken}}) _, err := h.federation.SysTrashSweep(ctx, struct{}{}) if err != nil { logger.WithError(err).Info("trash sweep failed") } } }