Class: Lowkiq::Queue::Actions

Inherits:
Object
  • Object
show all
Defined in:
lib/lowkiq/queue/actions.rb

Instance Method Summary collapse

Constructor Details

#initialize(queue, queries) ⇒ Actions

Returns a new instance of Actions.



4
5
6
7
8
9
10
# File 'lib/lowkiq/queue/actions.rb', line 4

def initialize(queue, queries)
  @queue = queue
  @queries = queries

  @pool = queue.pool
  @keys = Keys.new queue.name
end

Instance Method Details

#delete_all_failed_jobsObject



32
33
34
35
36
37
# File 'lib/lowkiq/queue/actions.rb', line 32

def delete_all_failed_jobs
  until (jobs = @queries.range_by_retry_count('0', '+inf', limit: 100); jobs.empty?)
    ids = jobs.map { |j| j[:id] }
    @queue.delete ids
  end
end

#kill_all_failed_jobsObject



24
25
26
27
28
29
30
# File 'lib/lowkiq/queue/actions.rb', line 24

def kill_all_failed_jobs
  until (jobs = @queries.range_by_retry_count('0', '+inf', limit: 100); jobs.empty?)
    @queue.push_to_morgue jobs
    ids = jobs.map { |j| j[:id] }
    @queue.delete ids
  end
end

#morgue_delete_all_jobsObject



55
56
57
58
59
60
# File 'lib/lowkiq/queue/actions.rb', line 55

def morgue_delete_all_jobs
  until (jobs = @queries.morgue_range_by_id('-', '+', limit: 100); jobs.empty?)
    ids = jobs.map { |j| j[:id] }
    @queue.morgue_delete ids
  end
end

#morgue_queue_up(ids) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/lowkiq/queue/actions.rb', line 39

def morgue_queue_up(ids)
  jobs = @queries.morgue_fetch ids
  return if jobs.empty?

  @queue.push_back jobs
  @queue.morgue_delete ids
end

#morgue_queue_up_all_jobsObject



47
48
49
50
51
52
53
# File 'lib/lowkiq/queue/actions.rb', line 47

def morgue_queue_up_all_jobs
  until (jobs = @queries.morgue_range_by_id('-', '+', limit: 100); jobs.empty?)
    @queue.push_back jobs
    ids = jobs.map { |j| j[:id] }
    @queue.morgue_delete ids
  end
end

#perform_all_jobs_nowObject



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/lowkiq/queue/actions.rb', line 12

def perform_all_jobs_now
  @pool.with do |redis|
    uredis = Utils::Redis.new redis
    redis.multi do
      uredis.zresetscores @keys.all_ids_scored_by_perform_in_zset
      @queue.shards.each do |shard|
        uredis.zresetscores @keys.ids_scored_by_perform_in_zset(shard)
      end
    end
  end
end