sidekiq-pauzer 2.2.0 → 3.0.0
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 +4 -4
- data/README.adoc +4 -4
- data/lib/sidekiq/pauzer/basic_fetch.rb +10 -32
- data/lib/sidekiq/pauzer/queues.rb +15 -7
- data/lib/sidekiq/pauzer/version.rb +1 -1
- data/lib/sidekiq/pauzer.rb +0 -3
- metadata +6 -10
- data/lib/sidekiq/pauzer/adapters/redis.rb +0 -34
- data/lib/sidekiq/pauzer/adapters/redis_client.rb +0 -37
- data/lib/sidekiq/pauzer/adapters.rb +0 -18
- data/lib/sidekiq/pauzer/runtime.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7ad60f6b5eadbbf347139ad0eaef9962e1983f90cf84bf5d1b409bb19ddfc4d
|
4
|
+
data.tar.gz: 01ff41aac0537faad75897dfa15a2427f00ee6d3a04e9b40ac686d8a52b05770
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd6aa63500df79f60d3fe1c65fb05e51c6dda01f2e431fe5637d4431220a01bcdf5255626cb484dcc08d8077652fb7746c52c17e68ff0acf3e5898608707213f
|
7
|
+
data.tar.gz: 2197a6faf19fae846a04f5f75271af586041b751f6a06a49d6cf5cb9e351a5c496db502a6cdfc38490eb314a2b3d84becaf20550cea59d1828f1ad5c463a5da9
|
data/README.adoc
CHANGED
@@ -96,16 +96,16 @@ dropped.
|
|
96
96
|
|
97
97
|
This library aims to support and work with following Sidekiq versions:
|
98
98
|
|
99
|
-
* Sidekiq 6.5.x
|
100
99
|
* Sidekiq 7.0.x
|
101
100
|
* Sidekiq 7.1.x
|
102
101
|
|
103
102
|
|
104
103
|
== Development
|
105
104
|
|
106
|
-
|
107
|
-
|
108
|
-
bundle exec
|
105
|
+
bundle install
|
106
|
+
bundle exec appraisal generate
|
107
|
+
bundle exec appraisal install
|
108
|
+
bundle exec rake
|
109
109
|
|
110
110
|
|
111
111
|
== Contributing
|
@@ -3,45 +3,23 @@
|
|
3
3
|
require "sidekiq"
|
4
4
|
require "sidekiq/fetch"
|
5
5
|
|
6
|
-
require_relative "./runtime"
|
7
|
-
|
8
6
|
module Sidekiq
|
9
7
|
module Pauzer
|
10
8
|
# Default Sidekiq's BasicFetch infused with Pauzer
|
11
9
|
class BasicFetch < Sidekiq::BasicFetch
|
12
10
|
private
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
excluding_paused(queues)
|
27
|
-
end
|
28
|
-
else
|
29
|
-
def queues_cmd
|
30
|
-
queues =
|
31
|
-
if @strictly_ordered_queues
|
32
|
-
@queues[0...-1]
|
33
|
-
else
|
34
|
-
permute = @queues.dup
|
35
|
-
permute.shuffle!
|
36
|
-
permute.uniq!
|
37
|
-
permute
|
38
|
-
end
|
39
|
-
|
40
|
-
excluding_paused(queues) << { timeout: Sidekiq::BasicFetch::TIMEOUT }
|
41
|
-
end
|
42
|
-
end
|
12
|
+
def queues_cmd
|
13
|
+
queues =
|
14
|
+
if @strictly_ordered_queues
|
15
|
+
@queues
|
16
|
+
else
|
17
|
+
permute = @queues.dup
|
18
|
+
permute.shuffle!
|
19
|
+
permute.uniq!
|
20
|
+
permute
|
21
|
+
end
|
43
22
|
|
44
|
-
def excluding_paused(queues)
|
45
23
|
queues - Pauzer.paused_queues.map { |name| "queue:#{name}" }
|
46
24
|
end
|
47
25
|
end
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
require "concurrent"
|
4
4
|
|
5
|
-
require_relative "./adapters"
|
6
|
-
|
7
5
|
module Sidekiq
|
8
6
|
module Pauzer
|
9
7
|
# @api internal
|
@@ -14,7 +12,8 @@ module Sidekiq
|
|
14
12
|
|
15
13
|
# @param config [Config]
|
16
14
|
def initialize(config)
|
17
|
-
@
|
15
|
+
@mutex = Mutex.new
|
16
|
+
@names = []
|
18
17
|
@redis_key = config.redis_key
|
19
18
|
@refresher = initialize_refresher(config.refresh_rate)
|
20
19
|
end
|
@@ -22,21 +21,21 @@ module Sidekiq
|
|
22
21
|
def each(&block)
|
23
22
|
return to_enum __method__ unless block
|
24
23
|
|
25
|
-
@names.dup.each(&block)
|
24
|
+
@mutex.synchronize { @names.dup }.each(&block)
|
26
25
|
|
27
26
|
self
|
28
27
|
end
|
29
28
|
|
30
29
|
# @param name [#to_s]
|
31
30
|
def pause!(name)
|
32
|
-
Sidekiq.redis { |conn|
|
31
|
+
Sidekiq.redis { |conn| conn.call("SADD", @redis_key, name.to_s) }
|
33
32
|
|
34
33
|
refresh
|
35
34
|
end
|
36
35
|
|
37
36
|
# @param name [#to_s]
|
38
37
|
def unpause!(name)
|
39
|
-
Sidekiq.redis { |conn|
|
38
|
+
Sidekiq.redis { |conn| conn.call("SREM", @redis_key, name.to_s) }
|
40
39
|
|
41
40
|
refresh
|
42
41
|
end
|
@@ -72,7 +71,16 @@ module Sidekiq
|
|
72
71
|
end
|
73
72
|
|
74
73
|
def refresh
|
75
|
-
@
|
74
|
+
@mutex.synchronize do
|
75
|
+
names = Sidekiq.redis do |conn|
|
76
|
+
# Cursor is not atomic, so there may be duplicates because of
|
77
|
+
# concurrent update operations
|
78
|
+
# See: https://redis.io/commands/scan/#scan-guarantees
|
79
|
+
conn.sscan(@redis_key).to_a.uniq.each(&:freeze)
|
80
|
+
end
|
81
|
+
|
82
|
+
@names.replace(names)
|
83
|
+
end
|
76
84
|
|
77
85
|
self
|
78
86
|
end
|
data/lib/sidekiq/pauzer.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-pauzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey Zapparov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '7.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '7.0'
|
41
41
|
description:
|
42
42
|
email:
|
43
43
|
- alexey@zapparov.com
|
@@ -48,16 +48,12 @@ files:
|
|
48
48
|
- README.adoc
|
49
49
|
- lib/sidekiq-pauzer.rb
|
50
50
|
- lib/sidekiq/pauzer.rb
|
51
|
-
- lib/sidekiq/pauzer/adapters.rb
|
52
|
-
- lib/sidekiq/pauzer/adapters/redis.rb
|
53
|
-
- lib/sidekiq/pauzer/adapters/redis_client.rb
|
54
51
|
- lib/sidekiq/pauzer/basic_fetch.rb
|
55
52
|
- lib/sidekiq/pauzer/config.rb
|
56
53
|
- lib/sidekiq/pauzer/patches/queue.rb
|
57
54
|
- lib/sidekiq/pauzer/patches/web_action.rb
|
58
55
|
- lib/sidekiq/pauzer/patches/web_application.rb
|
59
56
|
- lib/sidekiq/pauzer/queues.rb
|
60
|
-
- lib/sidekiq/pauzer/runtime.rb
|
61
57
|
- lib/sidekiq/pauzer/version.rb
|
62
58
|
- lib/sidekiq/pauzer/web.rb
|
63
59
|
- web/views/queues.erb
|
@@ -66,9 +62,9 @@ licenses:
|
|
66
62
|
- MIT
|
67
63
|
metadata:
|
68
64
|
homepage_uri: https://gitlab.com/ixti/sidekiq-pauzer
|
69
|
-
source_code_uri: https://gitlab.com/ixti/sidekiq-pauzer/tree/
|
65
|
+
source_code_uri: https://gitlab.com/ixti/sidekiq-pauzer/tree/v3.0.0
|
70
66
|
bug_tracker_uri: https://gitlab.com/ixti/sidekiq-pauzer/issues
|
71
|
-
changelog_uri: https://gitlab.com/ixti/sidekiq-pauzer/blob/
|
67
|
+
changelog_uri: https://gitlab.com/ixti/sidekiq-pauzer/blob/v3.0.0/CHANGES.md
|
72
68
|
rubygems_mfa_required: 'true'
|
73
69
|
post_install_message:
|
74
70
|
rdoc_options: []
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sidekiq
|
4
|
-
module Pauzer
|
5
|
-
module Adapters
|
6
|
-
# redis-rb adapter
|
7
|
-
module Redis
|
8
|
-
class << self
|
9
|
-
def adapts?(redis)
|
10
|
-
return true if defined?(::Redis) && redis.is_a?(::Redis)
|
11
|
-
return true if defined?(::Redis::Namespace) && redis.is_a?(::Redis::Namespace)
|
12
|
-
|
13
|
-
false
|
14
|
-
end
|
15
|
-
|
16
|
-
def add(redis, key, queue)
|
17
|
-
redis.sadd(key, queue)
|
18
|
-
end
|
19
|
-
|
20
|
-
def remove(redis, key, queue)
|
21
|
-
redis.srem(key, queue)
|
22
|
-
end
|
23
|
-
|
24
|
-
def list(redis, key)
|
25
|
-
# Cursor is not atomic, so there may be duplicates because of
|
26
|
-
# concurrent update operations
|
27
|
-
# See: https://redis.io/commands/scan/#scan-guarantees
|
28
|
-
redis.sscan_each(key).to_a.uniq.each(&:freeze)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../runtime"
|
4
|
-
|
5
|
-
module Sidekiq
|
6
|
-
module Pauzer
|
7
|
-
module Adapters
|
8
|
-
# redis-client adapter
|
9
|
-
module RedisClient
|
10
|
-
class << self
|
11
|
-
def adapts?(redis)
|
12
|
-
return true if Runtime::SIDEKIQ_SEVEN
|
13
|
-
return true if defined?(::RedisClient) && redis.is_a?(::RedisClient)
|
14
|
-
return true if defined?(::RedisClient::Decorator::Client) && redis.is_a?(::RedisClient::Decorator::Client)
|
15
|
-
|
16
|
-
false
|
17
|
-
end
|
18
|
-
|
19
|
-
def add(redis, key, queue)
|
20
|
-
redis.call("SADD", key, queue)
|
21
|
-
end
|
22
|
-
|
23
|
-
def remove(redis, key, queue)
|
24
|
-
redis.call("SREM", key, queue)
|
25
|
-
end
|
26
|
-
|
27
|
-
def list(redis, key)
|
28
|
-
# Cursor is not atomic, so there may be duplicates because of
|
29
|
-
# concurrent update operations
|
30
|
-
# See: https://redis.io/commands/scan/#scan-guarantees
|
31
|
-
redis.sscan(key).to_a.uniq.each(&:freeze)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "./adapters/redis"
|
4
|
-
require_relative "./adapters/redis_client"
|
5
|
-
|
6
|
-
module Sidekiq
|
7
|
-
module Pauzer
|
8
|
-
# @api internal
|
9
|
-
module Adapters
|
10
|
-
def self.[](redis)
|
11
|
-
return Adapters::RedisClient if Adapters::RedisClient.adapts?(redis)
|
12
|
-
return Adapters::Redis if Adapters::Redis.adapts?(redis)
|
13
|
-
|
14
|
-
raise TypeError, "Unsupported redis client: #{redis.class}"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|