resque_stuck_queue 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/lib/resque_stuck_queue/heartbeat_job.rb +3 -3
- data/lib/resque_stuck_queue/version.rb +1 -1
- data/lib/resque_stuck_queue.rb +1 -1
- data/test/test_helper.rb +6 -0
- data/test/test_integration.rb +35 -33
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
SHA512:
|
3
|
-
data.tar.gz: 2055181649b94897f6bfc18817199a35bf9a0324042da9a6ed15653bea22d459a7e5ba062ec57294c557d0ed2ab04df418bdce4b01f53e39ecae6771e7a39e16
|
4
|
-
metadata.gz: 3fe6ae6af383d55311d5075d85b86b73fe2955c3f7149ab23c5e0adf61a999b4fdd706951efc3e39594786c0f4c20e3208c4037f9e705fe97ac301e4f04edca4
|
5
2
|
SHA1:
|
6
|
-
data.tar.gz:
|
7
|
-
metadata.gz:
|
3
|
+
data.tar.gz: 24838251cf63913fd05a55753101def684df1a4f
|
4
|
+
metadata.gz: 3d158d30adce28f9d8cde9ea0e26e7af7309c03a
|
5
|
+
SHA512:
|
6
|
+
data.tar.gz: 6765964aa3fd134a04682037125b45f680d9263221ca7c58d40791ad286a33fd3a3330b39ae1df51ad73f49dd480ecd8b8b990b46360205827af88d75c272122
|
7
|
+
metadata.gz: 2fe9d2eadd44d70d24ab2bc2fa18eae87b159f1b30372e7968b7e0c4a04fc43a069b8fe35e4b512101f37056c3535302ce02dd0d6395871aa48db129d739157c
|
@@ -6,10 +6,10 @@ module Resque
|
|
6
6
|
attr_accessor :redis
|
7
7
|
|
8
8
|
def perform(*args)
|
9
|
-
keyname,host,port,namespace = *args
|
9
|
+
keyname,host,port,namespace,new_time = *args
|
10
10
|
@redis = Redis::Namespace.new(namespace, :redis => Redis.new(:host => host, :port => port))
|
11
|
-
@redis.set(keyname,
|
12
|
-
Resque::StuckQueue.logger.info "successfully updated key #{keyname}"
|
11
|
+
@redis.set(keyname, new_time)
|
12
|
+
Resque::StuckQueue.logger.info "successfully updated key #{keyname} to #{new_time} at #{Time.now}"
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
data/lib/resque_stuck_queue.rb
CHANGED
@@ -145,7 +145,7 @@ module Resque
|
|
145
145
|
queues.each do |queue_name|
|
146
146
|
# Redis::Namespace.new support as well as Redis.new
|
147
147
|
namespace = redis.respond_to?(:namespace) ? redis.namespace : nil
|
148
|
-
Resque.enqueue_to(queue_name, HeartbeatJob, heartbeat_key_for(queue_name), redis.client.host, redis.client.port, namespace )
|
148
|
+
Resque.enqueue_to(queue_name, HeartbeatJob, heartbeat_key_for(queue_name), redis.client.host, redis.client.port, namespace, Time.now.to_i )
|
149
149
|
end
|
150
150
|
end
|
151
151
|
end
|
data/test/test_helper.rb
CHANGED
@@ -18,6 +18,12 @@ module TestHelper
|
|
18
18
|
pid
|
19
19
|
end
|
20
20
|
|
21
|
+
def with_no_resque_failures(&blk)
|
22
|
+
Resque::Failure.clear
|
23
|
+
blk.call
|
24
|
+
assert_nil Resque::Failure.all, "Resque hearbeat job cant fail: #{Resque::Failure.all.inspect}"
|
25
|
+
end
|
26
|
+
|
21
27
|
def hax_kill_resque
|
22
28
|
# ugly, FIXME how to get pid of forked forked process. run_resque pid is incorrect.
|
23
29
|
`ps aux |grep resque |awk '{print $2}' |xargs kill`
|
data/test/test_integration.rb
CHANGED
@@ -55,49 +55,51 @@ class TestIntegration < Minitest::Test
|
|
55
55
|
def test_resque_enqueues_a_job_does_not_trigger
|
56
56
|
puts "#{__method__}"
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
assert_nil Resque::Failure.all, "Resque hearbeat job cant fail: #{Resque::Failure.all.inspect}"
|
68
|
-
assert_equal @triggered, false
|
58
|
+
with_no_resque_failures do
|
59
|
+
Resque::StuckQueue.config[:trigger_timeout] = 10
|
60
|
+
Resque::StuckQueue.config[:heartbeat] = 1
|
61
|
+
@triggered = false
|
62
|
+
Resque::StuckQueue.config[:triggered_handler] = proc { @triggered = true }
|
63
|
+
start_and_stop_loops_after(5)
|
64
|
+
sleep 3 # job ran successfully, so don't trigger
|
65
|
+
assert_equal @triggered, false
|
66
|
+
end
|
69
67
|
end
|
70
68
|
|
71
69
|
def test_resque_does_not_enqueues_a_job_does_trigger
|
72
70
|
puts "#{__method__}"
|
73
71
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
72
|
+
with_no_resque_failures do
|
73
|
+
Resque::StuckQueue.config[:trigger_timeout] = 0
|
74
|
+
Resque::StuckQueue.config[:heartbeat] = 1
|
75
|
+
@triggered = false
|
76
|
+
Resque::StuckQueue.config[:triggered_handler] = proc { @triggered = true }
|
77
|
+
start_and_stop_loops_after(2)
|
78
|
+
# check handler did get called
|
79
|
+
assert_equal @triggered, true
|
80
|
+
end
|
81
81
|
end
|
82
82
|
|
83
83
|
def test_has_settable_custom_hearbeat_job
|
84
84
|
puts "#{__method__}"
|
85
85
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
86
|
+
with_no_resque_failures do
|
87
|
+
Resque::StuckQueue.config[:trigger_timeout] = 2 # won't allow waiting too much and will complain (eg trigger) sooner than later
|
88
|
+
Resque::StuckQueue.config[:heartbeat] = 1
|
89
|
+
Resque::StuckQueue.config[:redis] = Redis::Namespace.new(nil, :redis => Redis.new)
|
90
|
+
|
91
|
+
begin
|
92
|
+
Resque::StuckQueue.config[:heartbeat_job] = proc { Resque.enqueue_to(:app, Resque::StuckQueue::HeartbeatJob, Resque::StuckQueue.heartbeat_key_for(:app)) }
|
93
|
+
@triggered = false
|
94
|
+
Resque::StuckQueue.config[:triggered_handler] = proc { @triggered = true }
|
95
|
+
start_and_stop_loops_after(4)
|
96
|
+
|
97
|
+
sleep 3 # allow trigger
|
98
|
+
assert true, "should not have raised"
|
99
|
+
assert @triggered, "should have triggered"
|
100
|
+
rescue => e
|
101
|
+
assert false, "should have succeeded with good refresh_job.\n #{e.inspect}"
|
102
|
+
end
|
101
103
|
end
|
102
104
|
end
|
103
105
|
|