···2233import (
44 "context"
55+ "log/slog"
56 "sync"
67 "time"
7889 "github.com/bluesky-social/indigo/events"
910 "github.com/bluesky-social/indigo/events/schedulers"
1010- logging "github.com/ipfs/go-log"
1111 "github.com/prometheus/client_golang/prometheus"
1212)
1313-1414-var log = logging.Logger("autoscaling-scheduler")
15131614// Scheduler is a scheduler that will scale up and down the number of workers based on the throughput of the workers.
1715type Scheduler struct {
···4038 autoscaleFrequency time.Duration
4139 autoscalerIn chan struct{}
4240 autoscalerOut chan struct{}
4141+4242+ log *slog.Logger
4343}
44444545type AutoscaleSettings struct {
···9999 autoscaleFrequency: autoscaleSettings.AutoscaleFrequency,
100100 autoscalerIn: make(chan struct{}),
101101 autoscalerOut: make(chan struct{}),
102102+103103+ log: slog.Default().With("system", "autoscaling-scheduler"),
102104 }
103105104106 for i := 0; i < p.concurrency; i++ {
···111113}
112114113115func (p *Scheduler) Shutdown() {
114114- log.Debugf("shutting down autoscaling scheduler for %s", p.ident)
116116+ p.log.Debug("shutting down autoscaling scheduler", "ident", p.ident)
115117116118 // stop autoscaling
117119 p.autoscalerIn <- struct{}{}
118120 close(p.autoscalerIn)
119121 <-p.autoscalerOut
120122121121- log.Debug("stopping autoscaling scheduler workers")
123123+ p.log.Debug("stopping autoscaling scheduler workers")
122124 // stop workers
123125 for i := 0; i < p.concurrency; i++ {
124126 p.feeder <- &consumerTask{signal: "stop"}
125127 }
126128 close(p.feeder)
127129128128- log.Debug("waiting for autoscaling scheduler workers to stop")
130130+ p.log.Debug("waiting for autoscaling scheduler workers to stop")
129131130132 p.workerGroup.Wait()
131133132132- log.Debug("stopping autoscaling scheduler throughput manager")
134134+ p.log.Debug("stopping autoscaling scheduler throughput manager")
133135 p.throughputManager.Stop()
134136135135- log.Debug("autoscaling scheduler shutdown complete")
137137+ p.log.Debug("autoscaling scheduler shutdown complete")
136138}
137139138140// Add autoscaling function
···197199}
198200199201func (p *Scheduler) worker() {
200200- log.Debugf("starting autoscaling worker for %s", p.ident)
202202+ p.log.Debug("starting autoscaling worker", "ident", p.ident)
201203 p.workersActive.Inc()
202204 p.workerGroup.Add(1)
203205 defer p.workerGroup.Done()
···205207 for work != nil {
206208 // Check if the work item contains a signal to stop the worker.
207209 if work.signal == "stop" {
208208- log.Debugf("stopping autoscaling worker for %s", p.ident)
210210+ p.log.Debug("stopping autoscaling worker", "ident", p.ident)
209211 p.workersActive.Dec()
210212 return
211213 }
212214213215 p.itemsActive.Inc()
214216 if err := p.do(context.TODO(), work.val); err != nil {
215215- log.Errorf("event handler failed: %s", err)
217217+ p.log.Error("event handler failed", "err", err)
216218 }
217219 p.itemsProcessed.Inc()
218220219221 p.lk.Lock()
220222 rem, ok := p.active[work.repo]
221223 if !ok {
222222- log.Errorf("should always have an 'active' entry if a worker is processing a job")
224224+ p.log.Error("should always have an 'active' entry if a worker is processing a job")
223225 }
224226225227 if len(rem) == 0 {
+9-7
events/schedulers/parallel/parallel.go
···2233import (
44 "context"
55+ "log/slog"
56 "sync"
6778 "github.com/bluesky-social/indigo/events"
89 "github.com/bluesky-social/indigo/events/schedulers"
99- logging "github.com/ipfs/go-log"
10101111 "github.com/prometheus/client_golang/prometheus"
1212)
1313-1414-var log = logging.Logger("parallel-scheduler")
15131614// Scheduler is a parallel scheduler that will run work on a fixed number of workers
1715type Scheduler struct {
···3331 itemsProcessed prometheus.Counter
3432 itemsActive prometheus.Counter
3533 workesActive prometheus.Gauge
3434+3535+ log *slog.Logger
3636}
37373838func NewScheduler(maxC, maxQ int, ident string, do func(context.Context, *events.XRPCStreamEvent) error) *Scheduler {
···5252 itemsProcessed: schedulers.WorkItemsProcessed.WithLabelValues(ident, "parallel"),
5353 itemsActive: schedulers.WorkItemsActive.WithLabelValues(ident, "parallel"),
5454 workesActive: schedulers.WorkersActive.WithLabelValues(ident, "parallel"),
5555+5656+ log: slog.Default().With("system", "parallel-scheduler"),
5557 }
56585759 for i := 0; i < maxC; i++ {
···6466}
65676668func (p *Scheduler) Shutdown() {
6767- log.Infof("shutting down parallel scheduler for %s", p.ident)
6969+ p.log.Info("shutting down parallel scheduler", "ident", p.ident)
68706971 for i := 0; i < p.maxConcurrency; i++ {
7072 p.feeder <- &consumerTask{
···7880 <-p.out
7981 }
80828181- log.Info("parallel scheduler shutdown complete")
8383+ p.log.Info("parallel scheduler shutdown complete")
8284}
83858486type consumerTask struct {
···123125124126 p.itemsActive.Inc()
125127 if err := p.do(context.TODO(), work.val); err != nil {
126126- log.Errorf("event handler failed: %s", err)
128128+ p.log.Error("event handler failed", "err", err)
127129 }
128130 p.itemsProcessed.Inc()
129131130132 p.lk.Lock()
131133 rem, ok := p.active[work.repo]
132134 if !ok {
133133- log.Errorf("should always have an 'active' entry if a worker is processing a job")
135135+ p.log.Error("should always have an 'active' entry if a worker is processing a job")
134136 }
135137136138 if len(rem) == 0 {
+1-3
events/schedulers/sequential/sequential.go
···2233import (
44 "context"
55-65 "github.com/bluesky-social/indigo/events"
76 "github.com/bluesky-social/indigo/events/schedulers"
88- logging "github.com/ipfs/go-log"
97 "github.com/prometheus/client_golang/prometheus"
108)
1191212-var log = logging.Logger("sequential-scheduler")
1010+// var log = slog.Default().With("system", "sequential-scheduler")
13111412// Scheduler is a sequential scheduler that will run work on a single worker
1513type Scheduler struct {