sidekiq_alive 2.2.2 → 2.2.3

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
  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: []