sidekiq_alive 2.1.9 → 2.2.1

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: 8a1531edeeb59ff8e59f1ea95bc3a9456b3893658254b1aa1dd9bd046b774914
4
- data.tar.gz: 5c8fdbcd1c8ca43fb3e3b461d94049fdf27e8663ee9aafb8bfcac8761f96a6c7
3
+ metadata.gz: d2e582c78da2c8fa6ab33a00ff95b84cb118146e4e6bd91da9571812a29b362a
4
+ data.tar.gz: 1e05d528f28a1c73ce5b53bab77b32d5526a759f0e73a490c77606bcd9ea80ee
5
5
  SHA512:
6
- metadata.gz: e5cb97906bd942c5c65b95537c75d1f39f77b7154845c2a6bd748e02b005d8103c76510eedb8e2676183c201cd21067e1f73fa7986681c858e6d8de477eac987
7
- data.tar.gz: 2a581a73a2b9825681f3904d7d6d69af8faf10db1a117c037836f07a21c8b43931db6cfdb40bfaff5d6b27806b64b8d73e4c26c6951c0a1710245f4da3a7f3bf
6
+ metadata.gz: d6cb33070d6b0ea67e4aee822f72bab2f00ef4fd1b930f52ab5f2a6450f146a64d5e4dff3e8c9aed662e5f1a82c32f71a08b70d40f817b297350b19779e016a5
7
+ data.tar.gz: 679728e07162ab19a31b9be42b75b430d466afaf76bb15cdfd6265092486ab17f7e1d5259d6467f9dc9eccb75c1d355b5bbb46712ccfec1b1ecad97c7a0bdf8f
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # SidekiqAlive
2
2
 
3
- ![build](https://github.com/arturictus/sidekiq_alive/actions/workflows/ruby.yml/badge.svg)
4
- [![Maintainability](https://api.codeclimate.com/v1/badges/35c39124564ffeb0ce4e/maintainability)](https://codeclimate.com/github/arturictus/sidekiq_alive/maintainability)
5
- [![Test Coverage](https://api.codeclimate.com/v1/badges/35c39124564ffeb0ce4e/test_coverage)](https://codeclimate.com/github/arturictus/sidekiq_alive/test_coverage)
3
+ [![Gem Version](https://badge.fury.io/rb/sidekiq_alive.svg)](https://rubygems.org/gems/sidekiq_alive)
4
+ [![Total Downloads](https://img.shields.io/gem/dt/sidekiq_alive?color=blue)](https://rubygems.org/gems/https://rubygems.org/gems/sidekiq_alive)
5
+ ![Workflow status](https://github.com/allure-framework/allure-ruby/workflows/Test/badge.svg)
6
+
7
+ ---
6
8
 
7
9
  SidekiqAlive offers a solution to add liveness probe for a Sidekiq instance deployed in Kubernetes.
8
10
  This library can be used to check sidekiq health outside kubernetes.
@@ -249,7 +251,7 @@ SidekiqAlive.setup do |config|
249
251
  # default: proc {}
250
252
  #
251
253
  # config.shutdown_callback = proc do
252
- # Sidekiq::Queue.all.find { |q| q.name == "#{queue_prefix}-#{SidekiqAlive.hostname}" }&.clear
254
+ # Sidekiq::Queue.all.find { |q| q.name == "#{config.queue_prefix}-#{SidekiqAlive.hostname}" }&.clear
253
255
  # end
254
256
 
255
257
  # ==> Queue Prefix
@@ -36,7 +36,7 @@ module SidekiqAlive
36
36
  end
37
37
 
38
38
  def registration_ttl
39
- @registration_ttl || time_to_live + 60
39
+ @registration_ttl || time_to_live * 3
40
40
  end
41
41
  end
42
42
  end
@@ -3,26 +3,22 @@
3
3
  module SidekiqAlive
4
4
  module Redis
5
5
  class Base
6
- def set(key, time:, ex:)
7
- raise("Implement me")
6
+ def set(...)
7
+ raise(NotImplementedError)
8
8
  end
9
9
 
10
10
  def match(key)
11
- raise("Implement me")
11
+ raise(NotImplementedError)
12
12
  end
13
13
 
14
14
  def delete(key)
15
- raise("Implement me")
15
+ raise(NotImplementedError)
16
16
  end
17
17
 
18
18
  def ttl(...)
19
19
  redis.ttl(...)
20
20
  end
21
21
 
22
- def flushall
23
- redis.flushall
24
- end
25
-
26
22
  private
27
23
 
28
24
  def redis
@@ -4,13 +4,17 @@ require_relative "base"
4
4
 
5
5
  module SidekiqAlive
6
6
  module Redis
7
- # Wrapper for redis client adapter used by sidekiq > 7
8
- #
9
- class ClientAdapter < Base
7
+ # Wrapper for `redis-client` gem used by `sidekiq` > 7
8
+ # https://github.com/redis-rb/redis-client
9
+ class RedisClientGem < Base
10
10
  def set(key, time:, ex:)
11
11
  redis.call("SET", key, time, ex: ex)
12
12
  end
13
13
 
14
+ def get(key)
15
+ redis.call("GET", key)
16
+ end
17
+
14
18
  def match(key)
15
19
  redis.scan("MATCH", key).map { |key| key }
16
20
  end
@@ -4,13 +4,17 @@ require_relative "base"
4
4
 
5
5
  module SidekiqAlive
6
6
  module Redis
7
- # Wrapper for redis client used by sidekiq < 7
8
- #
9
- class Client < Base
7
+ # Wrapper for `redis` gem used by sidekiq < 7
8
+ # https://github.com/redis/redis-rb
9
+ class RedisGem < Base
10
10
  def set(key, time:, ex:)
11
11
  redis.set(key, time, ex: ex)
12
12
  end
13
13
 
14
+ def get(key)
15
+ redis.get(key)
16
+ end
17
+
14
18
  def match(key)
15
19
  keys = []
16
20
  cursor = 0
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SidekiqAlive
4
+ module Redis
5
+ class << self
6
+ def adapter
7
+ Helpers.sidekiq_7 ? Redis::RedisClientGem.new : Redis::RedisGem.new
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ require_relative "redis/base"
14
+ require_relative "redis/redis_client_gem"
15
+ require_relative "redis/redis_gem"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SidekiqAlive
4
- VERSION = "2.1.9"
4
+ VERSION = "2.2.1"
5
5
  end
@@ -5,6 +5,7 @@ module SidekiqAlive
5
5
  include Sidekiq::Worker
6
6
  sidekiq_options retry: false
7
7
 
8
+ # Passing the hostname argument it's only for debugging enqueued jobs
8
9
  def perform(_hostname = SidekiqAlive.hostname)
9
10
  # Checks if custom liveness probe passes should fail or return false
10
11
  return unless config.custom_liveness_probe.call
@@ -15,12 +16,6 @@ module SidekiqAlive
15
16
  self.class.perform_in(config.time_to_live / 2, current_hostname)
16
17
  end
17
18
 
18
- def hostname_registered?(hostname)
19
- SidekiqAlive.registered_instances.any? do |ri|
20
- /#{hostname}/ =~ ri
21
- end
22
- end
23
-
24
19
  def write_living_probe
25
20
  # Write liveness probe
26
21
  SidekiqAlive.store_alive_key
data/lib/sidekiq_alive.rb CHANGED
@@ -6,8 +6,7 @@ require "singleton"
6
6
  require "sidekiq_alive/version"
7
7
  require "sidekiq_alive/config"
8
8
  require "sidekiq_alive/helpers"
9
- require "sidekiq_alive/redis/client"
10
- require "sidekiq_alive/redis/client_adapter"
9
+ require "sidekiq_alive/redis"
11
10
 
12
11
  module SidekiqAlive
13
12
  class << self
@@ -21,10 +20,16 @@ module SidekiqAlive
21
20
  sq_config.respond_to?(:[]) ? sq_config[:queues] : sq_config.options[:queues]
22
21
  end.unshift(current_queue)
23
22
 
23
+ # If no weight is set, webui might not show this queue for given instance/process.
24
+ if Helpers.sidekiq_7
25
+ sq_config.default_capsule.weights[current_queue] = 1
26
+ end
27
+
24
28
  logger.info(startup_info)
25
29
 
26
30
  register_current_instance
27
31
  store_alive_key
32
+ # Passing the hostname argument it's only for debugging enqueued jobs
28
33
  SidekiqAlive::Worker.perform_async(hostname)
29
34
  @server_pid = fork { SidekiqAlive::Server.run! }
30
35
 
@@ -83,12 +88,16 @@ module SidekiqAlive
83
88
  "#{config.registered_instance_key}::#{hostname}"
84
89
  end
85
90
 
91
+ def current_instance_registered?
92
+ redis.get(current_instance_register_key)
93
+ end
94
+
86
95
  def store_alive_key
87
96
  redis.set(current_lifeness_key, time: Time.now.to_i, ex: config.time_to_live.to_i)
88
97
  end
89
98
 
90
99
  def redis
91
- @redis ||= Helpers.sidekiq_7 ? Redis::ClientAdapter.new : Redis::Client.new
100
+ @redis ||= Redis.adapter
92
101
  end
93
102
 
94
103
  def alive?
@@ -135,7 +144,7 @@ module SidekiqAlive
135
144
  end
136
145
 
137
146
  def successful_startup_text
138
- "Successfully started sidekiq-alive, registered instances: #{registered_instances.join("\n\s\s- ")}"
147
+ "Successfully started sidekiq-alive, registered with key: #{current_instance_register_key}"
139
148
  end
140
149
 
141
150
  def register_instance(instance_name)
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.1.9
4
+ version: 2.2.1
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-01-11 00:00:00.000000000 Z
12
+ date: 2023-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 2.0.2
48
+ version: 2.1.0
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 2.0.2
55
+ version: 2.1.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -115,14 +115,14 @@ dependencies:
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: 0.48.0
118
+ version: 0.49.0
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: 0.48.0
125
+ version: 0.49.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rack
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -199,9 +199,10 @@ files:
199
199
  - lib/sidekiq_alive.rb
200
200
  - lib/sidekiq_alive/config.rb
201
201
  - lib/sidekiq_alive/helpers.rb
202
+ - lib/sidekiq_alive/redis.rb
202
203
  - lib/sidekiq_alive/redis/base.rb
203
- - lib/sidekiq_alive/redis/client.rb
204
- - lib/sidekiq_alive/redis/client_adapter.rb
204
+ - lib/sidekiq_alive/redis/redis_client_gem.rb
205
+ - lib/sidekiq_alive/redis/redis_gem.rb
205
206
  - lib/sidekiq_alive/server.rb
206
207
  - lib/sidekiq_alive/version.rb
207
208
  - lib/sidekiq_alive/worker.rb
@@ -212,7 +213,7 @@ metadata:
212
213
  homepage_uri: https://github.com/arturictus/sidekiq_alive
213
214
  source_code_uri: https://github.com/arturictus/sidekiq_alive
214
215
  changelog_uri: https://github.com/arturictus/sidekiq_alive/releases
215
- documentation_uri: https://github.com/arturictus/sidekiq_alive/blob/v2.1.9/README.md
216
+ documentation_uri: https://github.com/arturictus/sidekiq_alive/blob/v2.2.1/README.md
216
217
  bug_tracker_uri: https://github.com/arturictus/sidekiq_alive/issues
217
218
  post_install_message:
218
219
  rdoc_options: []