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  }