resque_stuck_queue 0.0.8 → 0.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- data.tar.gz: 45a7b50263556a7d07eaaee7c006033479ba01f2
4
- metadata.gz: 8b0c17d7a88388d815317a82502f37f6f57d3a8a
3
+ data.tar.gz: cd305cd673750663559d00b2b6412f19becc6a50
4
+ metadata.gz: 27e1e7879f29cb47777bfaf71dc85dac57458812
5
5
  SHA512:
6
- data.tar.gz: eb8d73f5882b34d63c5cee3cf4cb8bec0e66a2c9b3f30355772042284a93c98bf01357e936fab39904015c5f093588d471af1583daaf8cff6c856870b35fef48
7
- metadata.gz: 714f459c5ae47a20353efc148050a2e7957557776110852266688e84d9c3ab36a908831b56a5fde7d18293181569722f925716c1ac7fbd3e0c9b0762bd59648b
6
+ data.tar.gz: 2a99f6cb2b8efa736a22b02ef89245b09f58b86e0ed9189623979e8561d59101b5e88c74c6354a8ee4f26b8a66d5c9e5473a1c471ee4daa893f57136c2f3d8b6
7
+ metadata.gz: 08d93e4f41bfb98204c7c3cb2c3df9291d65876f11cc339559753be824dfb42f4a79f442eab1e7af0f25daf3647e058cd924172efe0eabc04bd69fb8e8756b80
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  *gem
2
+ Gemfile.lock
data/README.md CHANGED
@@ -41,6 +41,9 @@ Resque::StuckQueue.config[:handler] = proc { send_email }
41
41
  # optional, in case you want to set your own name for the key that will be used as the last good hearbeat time
42
42
  Resque::StuckQueue.config[:global_key] = "name-the-refresh-key-as-you-please"
43
43
 
44
+ # optional, monitor a specific redis queue
45
+ Resque::StuckQueue.config[:queue_name] = :app
46
+
44
47
  # optional, if you want the resque-stuck-queue threads to explicitly raise, default is false
45
48
  Resque::StuckQueue.config[:abort_on_exception] = true
46
49
 
@@ -49,6 +52,9 @@ Resque::StuckQueue.config[:logger] = Logger.new($stdout)
49
52
 
50
53
  # optional, pass a redis.
51
54
  Resque::StuckQueue.config[:redis] = Redis.new
55
+
56
+ # optional, your own custom refresh job. below has an example.
57
+ Resque::StuckQueue.config[:refresh_job] = proc { your_own_enqueue_refreshing_global_key }
52
58
  </pre>
53
59
 
54
60
  Then start it:
@@ -103,7 +109,7 @@ $ bundle exec rake --trace resque:stuck_queue
103
109
 
104
110
  ## Sidekiq/Other redis-based job queues
105
111
 
106
- If you have trouble with other queues you can use this lib by setting your own custom refresh job (aka, the job that refreshes the global_key). The one thing you need to take care of is ensure whatever and however you enque your own custom job, it sets the global_key to Time.now. Then do:
112
+ If you have trouble with other queues you can use this lib by setting your own custom refresh job (aka, the job that refreshes the global_key). The one thing you need to take care of is ensure whatever and however you enque your own custom job, it sets the global_key to Time.now:
107
113
 
108
114
  <pre>
109
115
 
data/THOUGHTS CHANGED
@@ -11,3 +11,6 @@ add a 'resque_stuck_queue/tasks' bit? See tres eg
11
11
  require 'resque/stuck_queue' instead?
12
12
  ensure the logging gets flushed into log file correctly? (integration with god?)
13
13
  add a trap{} to force_stop. ok for overwriting process's trap handlers? use config for that?
14
+
15
+ fix skeleton recipe https://github.com/shaiguitar/resque_stuck_queue/blame/master/README.md#L103
16
+ raise appname, => :environment, log path
@@ -104,7 +104,11 @@ module Resque
104
104
 
105
105
  def global_key
106
106
  # public, for use in custom heartbeat job
107
- config[:global_key] || GLOBAL_KEY
107
+ "#{named_queue}:#{config[:global_key] || GLOBAL_KEY}"
108
+ end
109
+
110
+ def named_queue
111
+ config[:named_queue] || :app
108
112
  end
109
113
 
110
114
  private
@@ -191,11 +195,11 @@ module Resque
191
195
  end
192
196
 
193
197
  class RefreshLatestTimestamp
194
- @queue = :app
198
+ @queue = Resque::StuckQueue.named_queue
195
199
  def self.perform(args)
196
200
  timestamp_key = args[0]
197
- host = args[1] || "localhost"
198
- port = args[2] || "6379"
201
+ host = args[1]
202
+ port = args[2]
199
203
  r = Redis.new(:host => host, :port => port)
200
204
  r.set(timestamp_key, Time.now.to_i)
201
205
  end
@@ -1,5 +1,5 @@
1
1
  module Resque
2
2
  module StuckQueue
3
- VERSION = "0.0.8"
3
+ VERSION = "0.0.9"
4
4
  end
5
5
  end
data/test/test_helper.rb CHANGED
@@ -2,6 +2,8 @@ require 'minitest'
2
2
  require "minitest/autorun"
3
3
  require 'pry'
4
4
  require 'mocha'
5
+ require "minitest/unit"
6
+ require "mocha/mini_test"
5
7
  $:.unshift(".")
6
8
  require 'resque_stuck_queue'
7
9
  require File.join(File.expand_path(File.dirname(__FILE__)), "resque", "set_redis_key")
@@ -0,0 +1,35 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
2
+
3
+ class TestNamedQueue < Minitest::Test
4
+
5
+ include TestHelper
6
+
7
+ def setup
8
+ Resque::StuckQueue.config[:trigger_timeout] = 1
9
+ Resque::StuckQueue.config[:heartbeat] = 1
10
+ Resque::StuckQueue.config[:abort_on_exception] = true
11
+ end
12
+
13
+ def teardown
14
+ Resque::StuckQueue.reset!
15
+ end
16
+
17
+ def test_no_custom_named_queue
18
+ puts "#{__method__}"
19
+ Resque::StuckQueue.config[:named_queue] = nil
20
+ start_and_stop_loops_after(2)
21
+ assert_equal Resque::StuckQueue.global_key, "app:resque-stuck-queue"
22
+ assert_equal Resque::StuckQueue.named_queue, :app
23
+ end
24
+
25
+ def test_has_custom_named_queue
26
+ puts "#{__method__}"
27
+ Resque::StuckQueue.config[:named_queue] = :foo
28
+ start_and_stop_loops_after(2)
29
+ assert_equal Resque::StuckQueue.global_key, "foo:resque-stuck-queue"
30
+ assert_equal Resque::StuckQueue.named_queue, :foo
31
+ end
32
+
33
+ end
34
+
35
+
@@ -7,6 +7,7 @@ class TestResqueStuckQueue < Minitest::Test
7
7
  def teardown
8
8
  puts "#{__method__}"
9
9
  Resque::StuckQueue.unstub(:read_from_redis)
10
+ Resque::StuckQueue.config.clear
10
11
  end
11
12
 
12
13
  def setup
@@ -22,7 +23,7 @@ class TestResqueStuckQueue < Minitest::Test
22
23
  assert_nil Resque.redis.get("it-is-configurable"), "global key should not be set"
23
24
  Resque::StuckQueue.config[:global_key] = "it-is-configurable"
24
25
  start_and_stop_loops_after(2)
25
- refute_nil Resque.redis.get("it-is-configurable"), "global key should be set"
26
+ refute_nil Resque.redis.get("app:it-is-configurable"), "global key should be set"
26
27
  end
27
28
 
28
29
  def test_it_does_not_trigger_handler_if_under_max_time
@@ -40,5 +40,4 @@ class TestYourOwnRefreshJob < Minitest::Test
40
40
  end
41
41
  end
42
42
 
43
-
44
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque_stuck_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shai Rosenfeld
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2014-01-14 00:00:00 Z
12
+ date: 2014-01-23 00:00:00 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-mutex
@@ -52,7 +52,6 @@ extra_rdoc_files: []
52
52
  files:
53
53
  - .gitignore
54
54
  - Gemfile
55
- - Gemfile.lock
56
55
  - LICENSE.txt
57
56
  - README.md
58
57
  - Rakefile
@@ -67,6 +66,7 @@ files:
67
66
  - test/test_helper.rb
68
67
  - test/test_integration.rb
69
68
  - test/test_logger.rb
69
+ - test/test_named_queue.rb
70
70
  - test/test_resque_2.rb
71
71
  - test/test_resque_stuck_queue.rb
72
72
  - test/test_set_custom_refresh_job.rb
@@ -100,6 +100,7 @@ test_files:
100
100
  - test/test_helper.rb
101
101
  - test/test_integration.rb
102
102
  - test/test_logger.rb
103
+ - test/test_named_queue.rb
103
104
  - test/test_resque_2.rb
104
105
  - test/test_resque_stuck_queue.rb
105
106
  - test/test_set_custom_refresh_job.rb
data/Gemfile.lock DELETED
@@ -1,58 +0,0 @@
1
- GIT
2
- remote: https://github.com/engineyard/resque.git
3
- revision: 2949f9f5b035c59a7c03999c00558544837324b5
4
- specs:
5
- resque (2.0.0.pre.1)
6
- json
7
- mono_logger (~> 1.0)
8
- redis-namespace (>= 1.3.0)
9
- thor (~> 0.17)
10
-
11
- GEM
12
- remote: https://rubygems.org/
13
- specs:
14
- coderay (1.1.0)
15
- json (1.8.1)
16
- m (1.3.2)
17
- method_source (>= 0.6.7)
18
- rake (>= 0.9.2.2)
19
- metaclass (0.0.1)
20
- method_source (0.8.2)
21
- minitest (5.2.0)
22
- mocha (0.14.0)
23
- metaclass (~> 0.0.1)
24
- mono_logger (1.1.0)
25
- pry (0.9.12.4)
26
- coderay (~> 1.0)
27
- method_source (~> 0.8)
28
- slop (~> 3.4)
29
- rake (10.1.0)
30
- redis (3.0.6)
31
- redis-classy (1.2.0)
32
- redis-namespace (~> 1.0)
33
- redis-mutex (2.1.1)
34
- redis-classy (~> 1.2)
35
- redis-namespace (1.4.1)
36
- redis (~> 3.0.4)
37
- resque-scheduler (2.0.1)
38
- redis (>= 2.0.1)
39
- resque (>= 1.20.0)
40
- rufus-scheduler
41
- rufus-scheduler (2.0.19)
42
- tzinfo (>= 0.3.23)
43
- slop (3.4.7)
44
- thor (0.18.1)
45
- tzinfo (0.3.38)
46
-
47
- PLATFORMS
48
- ruby
49
-
50
- DEPENDENCIES
51
- m
52
- minitest
53
- mocha
54
- pry
55
- rake
56
- redis-mutex
57
- resque!
58
- resque-scheduler