Module: SkRequeue::Core::ClassMethods

Defined in:
lib/sk_requeue/core.rb

Instance Method Summary collapse

Instance Method Details

#build_job_key(job) ⇒ Object



40
41
42
# File 'lib/sk_requeue/core.rb', line 40

def build_job_key(job)
  [job.args[0], job.args[1], job.args[2]].join(':')
end

#enqueables_map(action, enqueables_arr) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/sk_requeue/core.rb', line 31

def enqueables_map(action, enqueables_arr)
 	 temp_map = {}
	 enqueables_arr.each do	|e| 
	 	key = e.build_model_key(action) 
	 	temp_map[key] = e
	 end
	 temp_map
end

#failure_and_duplicacy_recovery(action, enqueables_arr) {|detached_records| ... } ⇒ Object

Yields:

  • (detached_records)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sk_requeue/core.rb', line 12

def failure_and_duplicacy_recovery(action, enqueables_arr)
  ss = Sidekiq::ScheduledSet.new
  all_queued_keys = []
  enqueables_hash = enqueables_map(action, enqueables_arr)
  ss.each do |job|
    next if job.klass != worker_name
    sk_key = build_job_key(job)
    if all_queued_keys.include?(sk_key) || !(enqueables_hash.has_key?(sk_key))
      job.delete
    else
      all_queued_keys << sk_key
    end
  end
  detached_keys = (enqueables_hash.keys - all_queued_keys)
  detached_records = enqueables_hash.slice(*detached_keys).values
  yield(detached_records) if block_given?
  detached_records
end