mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-02-11 15:18:59 +00:00
refactor: complete graceful shutdown implementation and add service runner (#493)
This commit is contained in:
committed by
GitHub
parent
6bd6cefaa6
commit
bda178c2bb
45
backend/internal/job/geoloite_update_job.go
Normal file
45
backend/internal/job/geoloite_update_job.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package job
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/pocket-id/pocket-id/backend/internal/service"
|
||||
)
|
||||
|
||||
type GeoLiteUpdateJobs struct {
|
||||
geoLiteService *service.GeoLiteService
|
||||
}
|
||||
|
||||
func (s *Scheduler) RegisterGeoLiteUpdateJobs(ctx context.Context, geoLiteService *service.GeoLiteService) error {
|
||||
// Check if the service needs periodic updating
|
||||
if geoLiteService.DisableUpdater() {
|
||||
// Nothing to do
|
||||
return nil
|
||||
}
|
||||
|
||||
jobs := &GeoLiteUpdateJobs{geoLiteService: geoLiteService}
|
||||
|
||||
// Register the job to run every day, at 5 minutes past midnight
|
||||
err := s.registerJob(ctx, "UpdateGeoLiteDB", "5 * */1 * *", jobs.updateGoeLiteDB)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Run the job immediately on startup, with a 1s delay
|
||||
go func() {
|
||||
time.Sleep(time.Second)
|
||||
err = jobs.updateGoeLiteDB(ctx)
|
||||
if err != nil {
|
||||
// Log the error only, but don't return it
|
||||
log.Printf("Failed to Update GeoLite database: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (j *GeoLiteUpdateJobs) updateGoeLiteDB(ctx context.Context) error {
|
||||
return j.geoLiteService.UpdateDatabase(ctx)
|
||||
}
|
||||
@@ -26,7 +26,7 @@ func NewScheduler() (*Scheduler, error) {
|
||||
|
||||
// Run the scheduler.
|
||||
// This function blocks until the context is canceled.
|
||||
func (s *Scheduler) Run(ctx context.Context) {
|
||||
func (s *Scheduler) Run(ctx context.Context) error {
|
||||
log.Println("Starting job scheduler")
|
||||
s.scheduler.Start()
|
||||
|
||||
@@ -39,6 +39,8 @@ func (s *Scheduler) Run(ctx context.Context) {
|
||||
} else {
|
||||
log.Println("Job scheduler shut down")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Scheduler) registerJob(ctx context.Context, name string, interval string, job func(ctx context.Context) error) error {
|
||||
|
||||
Reference in New Issue
Block a user