func (cmd *retentionCmd) run(ctx scope.Context, args []string) error { c, err := getCluster(ctx) if err != nil { return err } b, err := getBackend(ctx, c) if err != nil { return fmt.Errorf("backend error: %s", err) } defer b.Close() defer func() { ctx.Cancel() ctx.WaitGroup().Wait() }() // start metrics server ctx.WaitGroup().Add(1) go retention.Serve(ctx, cmd.addr) // start metrics scanner ctx.WaitGroup().Add(1) go retention.ExpiredScanLoop(ctx, c, b, cmd.interval) // start delete scanner ctx.WaitGroup().Add(1) retention.DeleteScanLoop(ctx, c, b, cmd.interval) return nil }
func (cmd *retentionCmd) run(ctx scope.Context, args []string) error { heim, b, err := getHeimWithPsqlBackend(ctx) if err != nil { return err } defer func() { ctx.Cancel() ctx.WaitGroup().Wait() heim.Backend.Close() }() // start metrics server ctx.WaitGroup().Add(1) go retention.Serve(ctx, cmd.addr) // start metrics scanner ctx.WaitGroup().Add(1) go retention.ExpiredScanLoop(ctx, heim.Cluster, b, cmd.interval) // start delete scanner ctx.WaitGroup().Add(1) retention.DeleteScanLoop(ctx, heim.Cluster, b, cmd.interval) return nil }