fix: database lock by adding lock function when set schedule
Some checks failed
/ push (push) Has been cancelled
Some checks failed
/ push (push) Has been cancelled
This commit is contained in:
parent
c114469721
commit
0c784b4cc9
|
@ -96,26 +96,28 @@ func (api *API) PubsubStartDownloadSubreddit(ctx context.Context, params PubsubS
|
||||||
return errs.Wrapw(err, "failed to verify subreddit existence", "params", params)
|
return errs.Wrapw(err, "failed to verify subreddit existence", "params", params)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = api.withTransaction(ctx, func(exec bob.Executor) error {
|
api.lockf(func() {
|
||||||
_, err := api.scheduleSet(ctx, exec, ScheduleSetParams{
|
err = api.withTransaction(ctx, func(exec bob.Executor) error {
|
||||||
Subreddit: subreddit.Name,
|
_, err := api.scheduleSet(ctx, exec, ScheduleSetParams{
|
||||||
Status: ScheduleStatusEnqueued,
|
Subreddit: subreddit.Name,
|
||||||
|
Status: ScheduleStatusEnqueued,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
payload, err := json.Marshal(subreddit)
|
||||||
|
if err != nil {
|
||||||
|
return errs.Wrapw(err, "failed to marshal subreddit")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = api.publisher.Publish(downloadTopic, message.NewMessage(watermill.NewUUID(), payload))
|
||||||
|
if err != nil {
|
||||||
|
return errs.Wrapw(err, "failed to enqueue reddit download", "params", params)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
payload, err := json.Marshal(subreddit)
|
|
||||||
if err != nil {
|
|
||||||
return errs.Wrapw(err, "failed to marshal subreddit")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = api.publisher.Publish(downloadTopic, message.NewMessage(watermill.NewUUID(), payload))
|
|
||||||
if err != nil {
|
|
||||||
return errs.Wrapw(err, "failed to enqueue reddit download", "params", params)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
})
|
||||||
|
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue