github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/gc/resource_cache_use_collector.go (about) 1 package gc 2 3 import ( 4 "context" 5 "time" 6 7 "code.cloudfoundry.org/lager/lagerctx" 8 "github.com/pf-qiu/concourse/v6/atc/db" 9 "github.com/pf-qiu/concourse/v6/atc/metric" 10 multierror "github.com/hashicorp/go-multierror" 11 ) 12 13 type resourceCacheUseCollector struct { 14 cacheLifecycle db.ResourceCacheLifecycle 15 } 16 17 func NewResourceCacheUseCollector(cacheLifecycle db.ResourceCacheLifecycle) *resourceCacheUseCollector { 18 return &resourceCacheUseCollector{ 19 cacheLifecycle: cacheLifecycle, 20 } 21 } 22 23 func (rcuc *resourceCacheUseCollector) Run(ctx context.Context) error { 24 logger := lagerctx.FromContext(ctx).Session("resource-cache-use-collector") 25 26 logger.Debug("start") 27 defer logger.Debug("done") 28 29 start := time.Now() 30 defer func() { 31 metric.ResourceCacheUseCollectorDuration{ 32 Duration: time.Since(start), 33 }.Emit(logger) 34 }() 35 36 var errs error 37 38 err := rcuc.cacheLifecycle.CleanBuildImageResourceCaches(logger.Session("clean-build-images")) 39 if err != nil { 40 errs = multierror.Append(errs, err) 41 logger.Error("failed-to-clean-build-image-uses", err) 42 } 43 44 err = rcuc.cacheLifecycle.CleanUsesForFinishedBuilds(logger.Session("clean-for-finished-builds")) 45 if err != nil { 46 errs = multierror.Append(errs, err) 47 logger.Error("failed-to-clean-finished-build-uses", err) 48 } 49 50 return errs 51 }