Skip to content

Commit

Permalink
Resolving race conditions and separating gocron task code
Browse files Browse the repository at this point in the history
  • Loading branch information
fourjae committed Aug 2, 2024
1 parent 13369fc commit 6cc0e19
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
11 changes: 6 additions & 5 deletions server/backend/housekeeping/housekeeping.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,30 +50,31 @@ func New(conf *Config) (*Housekeeping, error) {
func (h *Housekeeping) RegisterTask(
intervalDeactivateCandidates time.Duration,
intervalDeleteDocuments time.Duration,
task func(ctx context.Context) error,
taskDeactivateCandidates func(ctx context.Context) error,
taskDeleteDocuments func(ctx context.Context) error,
) error {
if _, err := h.scheduler.NewJob(
gocron.DurationJob(intervalDeactivateCandidates),
gocron.NewTask(func() {
ctx := context.Background()
if err := task(ctx); err != nil {
if err := taskDeactivateCandidates(ctx); err != nil {
logging.From(ctx).Error(err)
}
}),
); err != nil {
return fmt.Errorf("scheduler new job: %w", err)
return fmt.Errorf("scheduler new job for deactivating candidates: %w", err)
}

if _, err := h.scheduler.NewJob(
gocron.DurationJob(intervalDeleteDocuments),
gocron.NewTask(func() {
ctx := context.Background()
if err := task(ctx); err != nil {
if err := taskDeleteDocuments(ctx); err != nil {
logging.From(ctx).Error(err)
}
}),
); err != nil {
return fmt.Errorf("scheduler new job: %w", err)
return fmt.Errorf("scheduler new job for deleting documents: %w", err)
}

return nil
Expand Down
7 changes: 4 additions & 3 deletions server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,10 @@ func (r *Yorkie) RegisterHousekeepingTasks(be *backend.Backend) error {
if err != nil {
return err
}

// Second task: Document hard deletes
housekeepingLastDeactivateInactivesProjectID = lastProjectDeactivateInactivesID
return nil
},
func(ctx context.Context) error {
lastProjectDeleteDocumentID, err := clients.DeleteDocument(
ctx,
be,
Expand All @@ -200,7 +202,6 @@ func (r *Yorkie) RegisterHousekeepingTasks(be *backend.Backend) error {
return err
}

housekeepingLastDeactivateInactivesProjectID = lastProjectDeactivateInactivesID
housekeepingLastDeleteDocumentProjectID = lastProjectDeleteDocumentID
return nil
})
Expand Down

0 comments on commit 6cc0e19

Please sign in to comment.