sidekiq_alive 2.2.2 → 2.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e6b5e84ff746dd5d962f51625919178bc7495308abda9f7a1115adc09604bdb
4
- data.tar.gz: 0764a954ba5e287bfe0086229973582c2dd64ee8e053bd477215dbcbd419ee02
3
+ metadata.gz: cd90934747b7a9c1ca502f4ad44cdbd25e62477c01b7a3294f4b8c8e2779f27f
4
+ data.tar.gz: 0e05ab99ca8f24ed17209d6d31b37c5feb5202b899a540db550d892f810d65c0
5
5
  SHA512:
6
- metadata.gz: ad276a94133bef97bfa64532d526f159253071d2ec0ee9447124ab64d10534e2aae634f31e0b390c68a92fb5d5aad544ac4b185c7ac8a74de582042322fbae2a
7
- data.tar.gz: 20408e4c55d5fe5299d71ad7c1a81ebe550abce762875ca23b27b3d7ef40799d3859ff8cd33fda4a40d922c93552c2caaaadcf3d755778166ed8edd4dff5bfa0
6
+ metadata.gz: 3dd8df33e8a8d7055728f4f5a0a5e7a4622c5ea9a56480c0a0859e1c2b8ced78fa9a1dbd708ce98acbf8fc8ecbe396f3c8f64df08009d41c4d41243fe81763f5
7
+ data.tar.gz: e440b167ba6ac102eed86ee2f04273f093ed039e1110b055e0f6f6cefc75068dd0c96aad57fa657384f147a3e78f82b09dbd38357d9f9940fe228a2d0be914a6
@@ -7,7 +7,19 @@ module SidekiqAlive
7
7
  raise(NotImplementedError)
8
8
  end
9
9
 
10
- def match(key)
10
+ def zadd(set_key, ex, key)
11
+ raise(NotImplementedError)
12
+ end
13
+
14
+ def zrange(set_key, start, stop)
15
+ raise(NotImplementedError)
16
+ end
17
+
18
+ def zrangebyscore(set_key, min, max)
19
+ raise(NotImplementedError)
20
+ end
21
+
22
+ def zrem(set_key, key)
11
23
  raise(NotImplementedError)
12
24
  end
13
25
 
@@ -15,8 +15,20 @@ module SidekiqAlive
15
15
  Sidekiq.redis { |redis| redis.call("GET", key) }
16
16
  end
17
17
 
18
- def match(key)
19
- Sidekiq.redis { |redis| redis.scan("MATCH", key).map { |key| key } }
18
+ def zadd(set_key, ex, key)
19
+ Sidekiq.redis { |redis| redis.call("ZADD", set_key, ex, key) }
20
+ end
21
+
22
+ def zrange(set_key, start, stop)
23
+ Sidekiq.redis { |redis| redis.call("ZRANGE", set_key, start, stop) }
24
+ end
25
+
26
+ def zrangebyscore(set_key, min, max)
27
+ Sidekiq.redis { |redis| redis.call("ZRANGEBYSCORE", set_key, min, max) }
28
+ end
29
+
30
+ def zrem(set_key, key)
31
+ Sidekiq.redis { |redis| redis.call("ZREM", set_key, key) }
20
32
  end
21
33
 
22
34
  def delete(key)
@@ -15,16 +15,20 @@ module SidekiqAlive
15
15
  redis.get(key)
16
16
  end
17
17
 
18
- def match(key)
19
- keys = []
20
- cursor = 0
21
-
22
- loop do
23
- cursor, found_keys = redis.scan(cursor, match: key, count: 1000)
24
- keys += found_keys if found_keys
25
- break if cursor.to_i == 0
26
- end
27
- keys
18
+ def zadd(set_key, ex, key)
19
+ redis.zadd(set_key, ex, key)
20
+ end
21
+
22
+ def zrange(set_key, start, stop)
23
+ redis.zrange(set_key, start, stop)
24
+ end
25
+
26
+ def zrangebyscore(set_key, min, max)
27
+ redis.zrangebyscore(set_key, min, max)
28
+ end
29
+
30
+ def zrem(set_key, key)
31
+ redis.zrem(set_key, key)
28
32
  end
29
33
 
30
34
  def delete(key)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SidekiqAlive
4
- VERSION = "2.2.2"
4
+ VERSION = "2.2.3"
5
5
  end
data/lib/sidekiq_alive.rb CHANGED
@@ -9,6 +9,7 @@ require "sidekiq_alive/helpers"
9
9
  require "sidekiq_alive/redis"
10
10
 
11
11
  module SidekiqAlive
12
+ HOSTNAME_REGISTRY = "sidekiq-alive-hostnames"
12
13
  class << self
13
14
  def start
14
15
  Sidekiq.configure_server do |sq_config|
@@ -28,6 +29,7 @@ module SidekiqAlive
28
29
  logger.info(startup_info)
29
30
 
30
31
  register_current_instance
32
+
31
33
  store_alive_key
32
34
  # Passing the hostname argument it's only for debugging enqueued jobs
33
35
  SidekiqAlive::Worker.perform_async(hostname)
@@ -63,11 +65,13 @@ module SidekiqAlive
63
65
  # Delete any pending jobs for this instance
64
66
  logger.info(shutdown_info)
65
67
  purge_pending_jobs
66
- redis.delete(current_instance_register_key)
68
+ redis.zrem(HOSTNAME_REGISTRY, current_instance_register_key)
67
69
  end
68
70
 
69
71
  def registered_instances
70
- redis.match("#{config.registered_instance_key}::*")
72
+ # before we return we make sure we expire old keys
73
+ expire_old_keys
74
+ redis.zrange(HOSTNAME_REGISTRY, 0, -1)
71
75
  end
72
76
 
73
77
  def purge_pending_jobs
@@ -136,6 +140,7 @@ module SidekiqAlive
136
140
  port: config.port,
137
141
  ttl: config.time_to_live,
138
142
  queue: current_queue,
143
+ register_set: HOSTNAME_REGISTRY,
139
144
  liveness_key: current_lifeness_key,
140
145
  register_key: current_instance_register_key,
141
146
  }
@@ -144,11 +149,21 @@ module SidekiqAlive
144
149
  end
145
150
 
146
151
  def successful_startup_text
147
- "Successfully started sidekiq-alive, registered with key: #{current_instance_register_key}"
152
+ "Successfully started sidekiq-alive, registered with key: "\
153
+ "#{current_instance_register_key} on set #{HOSTNAME_REGISTRY}"
154
+ end
155
+
156
+ def expire_old_keys
157
+ # we get every key that should be expired by now
158
+ keys_to_expire = redis.zrangebyscore(HOSTNAME_REGISTRY, 0, Time.now.to_i)
159
+ # then we remove it
160
+ keys_to_expire.each { |key| redis.zrem(HOSTNAME_REGISTRY, key) }
148
161
  end
149
162
 
150
163
  def register_instance(instance_name)
151
- redis.set(instance_name, time: Time.now.to_i, ex: config.registration_ttl.to_i)
164
+ expiration = Time.now.to_i + config.registration_ttl.to_i
165
+ redis.zadd(HOSTNAME_REGISTRY, expiration, instance_name)
166
+ expire_old_keys
152
167
  end
153
168
  end
154
169
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_alive
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrejs Cunskis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-05-25 00:00:00.000000000 Z
12
+ date: 2023-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -213,7 +213,7 @@ metadata:
213
213
  homepage_uri: https://github.com/arturictus/sidekiq_alive
214
214
  source_code_uri: https://github.com/arturictus/sidekiq_alive
215
215
  changelog_uri: https://github.com/arturictus/sidekiq_alive/releases
216
- documentation_uri: https://github.com/arturictus/sidekiq_alive/blob/v2.2.2/README.md
216
+ documentation_uri: https://github.com/arturictus/sidekiq_alive/blob/v2.2.3/README.md
217
217
  bug_tracker_uri: https://github.com/arturictus/sidekiq_alive/issues
218
218
  post_install_message:
219
219
  rdoc_options: []