Class: Webhookdb::Jobs::SyncTargetRunSync

Inherits:
Object
  • Object
show all
Extended by:
Async::Job
Includes:
Amigo::QueueBackoffJob
Defined in:
lib/webhookdb/jobs/sync_target_run_sync.rb

Instance Method Summary collapse

Methods included from Async::Job

extended

Instance Method Details

#dependent_queuesObject



12
# File 'lib/webhookdb/jobs/sync_target_run_sync.rb', line 12

def dependent_queues = ["critical"]

#perform(sync_target_id) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/webhookdb/jobs/sync_target_run_sync.rb', line 14

def perform(sync_target_id)
  stgt = Webhookdb::SyncTarget[sync_target_id]
  if stgt.nil?
    # A sync target may be enqueued, but destroyed before the sync runs.
    # If so, log a warning. We see this on staging a lot,
    # but it does happen on production too, and should be expected.
    self.set_job_tags(result: "missing_sync_target", sync_target_id:)
    return
  end
  self.set_job_tags(stgt.log_tags)
  begin
    started = Time.now
    stgt.run_sync(now: started)
    self.set_job_tags(result: "sync_target_synced", synced_at_of: started)
  rescue Webhookdb::SyncTarget::SyncInProgress
    self.set_job_tags(result: "sync_target_already_in_progress")
  rescue Webhookdb::SyncTarget::Deleted
    self.set_job_tags(result: "sync_target_deleted")
  end
end