github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/gc/resource_config_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  )
    11  
    12  type resourceConfigCollector struct {
    13  	configFactory db.ResourceConfigFactory
    14  	gracePeriod   time.Duration
    15  }
    16  
    17  func NewResourceConfigCollector(
    18  	configFactory db.ResourceConfigFactory,
    19  	gracePeriod time.Duration,
    20  ) *resourceConfigCollector {
    21  	return &resourceConfigCollector{
    22  		configFactory: configFactory,
    23  		gracePeriod:   gracePeriod,
    24  	}
    25  }
    26  
    27  func (rcuc *resourceConfigCollector) Run(ctx context.Context) error {
    28  	logger := lagerctx.FromContext(ctx).Session("resource-config-collector")
    29  
    30  	logger.Debug("start")
    31  	defer logger.Debug("done")
    32  
    33  	start := time.Now()
    34  	defer func() {
    35  		metric.ResourceConfigCollectorDuration{
    36  			Duration: time.Since(start),
    37  		}.Emit(logger)
    38  	}()
    39  
    40  	return rcuc.configFactory.CleanUnreferencedConfigs(rcuc.gracePeriod)
    41  }