fix: process insight jobs during backfill

This commit is contained in:
2026-08-21 19:09:39 +08:00
parent 31fc5ebd39
commit ca55c2fb3d
4 changed files with 133 additions and 20 deletions

View File

@@ -47,13 +47,7 @@ func main() {
defer poll.Stop()
cleanup := time.NewTicker(24 * time.Hour)
defer cleanup.Stop()
nightly := time.NewTicker(time.Hour)
defer nightly.Stop()
if created, err := insightService.EnqueueAll(ctx, "NIGHTLY"); err != nil {
logger.Error("initial insight scheduling failed", "error", err)
} else {
logger.Info("initial insight scheduling complete", "created_jobs", created)
}
go runInsightScheduler(ctx, logger, insightService)
for {
select {
case <-ctx.Done():
@@ -80,15 +74,32 @@ func main() {
} else if deleted > 0 {
logger.Info("growth cleanup complete", "deleted_reports", deleted)
}
case <-nightly.C:
scheduleCtx, scheduleCancel := context.WithTimeout(ctx, 5*time.Minute)
created, err := insightService.EnqueueAll(scheduleCtx, "NIGHTLY")
scheduleCancel()
if err != nil {
logger.Error("nightly insight scheduling failed", "error", err)
} else if created > 0 {
logger.Info("nightly insight scheduling complete", "created_jobs", created)
}
}
}
}
func runInsightScheduler(ctx context.Context, logger *slog.Logger, service *insight.Service) {
run := func() {
scheduleCtx, cancel := context.WithTimeout(ctx, 30*time.Minute)
defer cancel()
created, err := service.EnqueueAll(scheduleCtx, "NIGHTLY")
if err != nil {
if !errors.Is(err, context.Canceled) {
logger.Error("insight scheduling failed", "error", err)
}
return
}
logger.Info("insight scheduling complete", "created_jobs", created)
}
run()
ticker := time.NewTicker(time.Hour)
defer ticker.Stop()
for {
select {
case <-ctx.Done():
return
case <-ticker.C:
run()
}
}
}