mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-23 15:19:38 +02:00
Handle duplicate sync jobs
This commit is contained in:
parent
aecb5aafd8
commit
5125411822
2 changed files with 17 additions and 0 deletions
|
@ -57,6 +57,12 @@ class Sync < ApplicationRecord
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
Rails.logger.tagged("Sync", id, syncable_type, syncable_id) do
|
Rails.logger.tagged("Sync", id, syncable_type, syncable_id) do
|
||||||
|
# This can happen on server restarts or if Sidekiq enqueues a duplicate job
|
||||||
|
unless may_start?
|
||||||
|
Rails.logger.warn("Sync #{id} is not in a valid state (#{aasm.from_state}) to start. Skipping sync.")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
start!
|
start!
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -3,6 +3,17 @@ require "test_helper"
|
||||||
class SyncTest < ActiveSupport::TestCase
|
class SyncTest < ActiveSupport::TestCase
|
||||||
include ActiveJob::TestHelper
|
include ActiveJob::TestHelper
|
||||||
|
|
||||||
|
test "does not run if not in a valid state" do
|
||||||
|
syncable = accounts(:depository)
|
||||||
|
sync = Sync.create!(syncable: syncable, status: :completed)
|
||||||
|
|
||||||
|
syncable.expects(:perform_sync).never
|
||||||
|
|
||||||
|
sync.perform
|
||||||
|
|
||||||
|
assert_equal "completed", sync.status
|
||||||
|
end
|
||||||
|
|
||||||
test "runs successful sync" do
|
test "runs successful sync" do
|
||||||
syncable = accounts(:depository)
|
syncable = accounts(:depository)
|
||||||
sync = Sync.create!(syncable: syncable)
|
sync = Sync.create!(syncable: syncable)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue