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 *presenceCmd) 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 presence.Serve(ctx, cmd.addr) // Start scanner. ctx.WaitGroup().Add(1) presence.ScanLoop(ctx, c, b, cmd.interval) return nil }
func (cmd *activityCmd) run(ctx scope.Context, args []string) error { // Get cluster in order to load config. _, err := getCluster(ctx) if err != nil { return fmt.Errorf("cluster error: %s", err) } listener := pq.NewListener(backend.Config.DB.DSN, 200*time.Millisecond, 5*time.Second, nil) if err := listener.Listen("broadcast"); err != nil { return fmt.Errorf("pq listen error: %s", err) } defer func() { ctx.Cancel() ctx.WaitGroup().Wait() }() // Start metrics server. ctx.WaitGroup().Add(1) go activity.Serve(ctx, cmd.addr) // Start scanner. ctx.WaitGroup().Add(1) activity.ScanLoop(ctx, listener) return nil }
func (cmd *workerCmd) run(ctx scope.Context, args []string) error { if len(args) < 1 { fmt.Printf("Usage: %s\r\n", cmd.usage()) // TODO: list queues return nil } fmt.Printf("getting config\n") cfg, err := getConfig(ctx) if err != nil { return err } fmt.Printf("getting heim\n") heim, err := cfg.Heim(ctx) if err != nil { fmt.Printf("heim error: %s\n", err) return err } defer func() { ctx.Cancel() ctx.WaitGroup().Wait() }() // Start metrics server. fmt.Printf("starting server\n") ctx.WaitGroup().Add(1) go worker.Serve(ctx, cmd.addr) // Start scanner. return worker.Loop(ctx, heim, cmd.worker, args[0]) }
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 }
func (cmd *presenceCmd) run(ctx scope.Context, args []string) error { heim, err := getHeim(ctx) if err != nil { return err } heim, b, err := getHeimWithPsqlBackend(ctx) defer func() { ctx.Cancel() ctx.WaitGroup().Wait() heim.Backend.Close() }() // Start metrics server. ctx.WaitGroup().Add(1) go presence.Serve(ctx, cmd.addr) // Start scanner. ctx.WaitGroup().Add(1) presence.ScanLoop(ctx, heim.Cluster, b, cmd.interval) return nil }