github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/worker/metricworker/cleanup.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package metricworker
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/juju/loggo"
    10  
    11  	"github.com/juju/juju/api/metricsmanager"
    12  	"github.com/juju/juju/worker"
    13  )
    14  
    15  var (
    16  	cleanupLogger = loggo.GetLogger("juju.worker.metricworker.cleanup")
    17  	notify        chan string
    18  )
    19  
    20  const (
    21  	cleanupPeriod = time.Hour
    22  )
    23  
    24  // NewCleanup creates a new periodic worker that calls the CleanupOldMetrics api.
    25  func NewCleanup(client metricsmanager.MetricsManagerClient) worker.Worker {
    26  	f := func(stopCh <-chan struct{}) error {
    27  		err := client.CleanupOldMetrics()
    28  		if err != nil {
    29  			cleanupLogger.Warningf("failed to cleanup %v - will retry later", err)
    30  			return nil
    31  		}
    32  		select {
    33  		case notify <- "cleanupCalled":
    34  		default:
    35  		}
    36  		return nil
    37  	}
    38  	return worker.NewPeriodicWorker(f, cleanupPeriod, worker.NewTimer)
    39  }