sidekiq_alive 2.1.9 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a1531edeeb59ff8e59f1ea95bc3a9456b3893658254b1aa1dd9bd046b774914
4
- data.tar.gz: 5c8fdbcd1c8ca43fb3e3b461d94049fdf27e8663ee9aafb8bfcac8761f96a6c7
3
+ metadata.gz: d778567938366cd3b85b6ccf88d43976b3e237a2d36546e0d4167cf6d04a61a8
4
+ data.tar.gz: 0dba8bfaf120451d8fed00ab53466a6b0d2101b64197acb64b562f7e28fef0d0
5
5
  SHA512:
6
- metadata.gz: e5cb97906bd942c5c65b95537c75d1f39f77b7154845c2a6bd748e02b005d8103c76510eedb8e2676183c201cd21067e1f73fa7986681c858e6d8de477eac987
7
- data.tar.gz: 2a581a73a2b9825681f3904d7d6d69af8faf10db1a117c037836f07a21c8b43931db6cfdb40bfaff5d6b27806b64b8d73e4c26c6951c0a1710245f4da3a7f3bf
6
+ metadata.gz: 8e4bf799b9a576190e7893876985540d381920e973756db23fae0a202b9c219ba9c3084e74a92edd6e5ef449b3071781d4596dd08ceeff4904ec377942693bd8
7
+ data.tar.gz: ecdac1cc02ab0114db9d2328012e813aa304f2d9f64f58cfc60565d67ab0eb8d0cdd7fc93b4f7bf10f3f72f3f3b7b59a8a8bd4a0f32c3ccc256ced3f4c3e9bda
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.
@@ -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.0"
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
@@ -25,6 +24,7 @@ module SidekiqAlive
25
24
 
26
25
  register_current_instance
27
26
  store_alive_key
27
+ # Passing the hostname argument it's only for debugging enqueued jobs
28
28
  SidekiqAlive::Worker.perform_async(hostname)
29
29
  @server_pid = fork { SidekiqAlive::Server.run! }
30
30
 
@@ -83,12 +83,16 @@ module SidekiqAlive
83
83
  "#{config.registered_instance_key}::#{hostname}"
84
84
  end
85
85
 
86
+ def current_instance_registered?
87
+ redis.get(current_instance_register_key)
88
+ end
89
+
86
90
  def store_alive_key
87
91
  redis.set(current_lifeness_key, time: Time.now.to_i, ex: config.time_to_live.to_i)
88
92
  end
89
93
 
90
94
  def redis
91
- @redis ||= Helpers.sidekiq_7 ? Redis::ClientAdapter.new : Redis::Client.new
95
+ @redis ||= Redis.adapter
92
96
  end
93
97
 
94
98
  def alive?
@@ -135,7 +139,7 @@ module SidekiqAlive
135
139
  end
136
140
 
137
141
  def successful_startup_text
138
- "Successfully started sidekiq-alive, registered instances: #{registered_instances.join("\n\s\s- ")}"
142
+ "Successfully started sidekiq-alive, registered with key: #{current_instance_register_key}"
139
143
  end
140
144
 
141
145
  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.0
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-03-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -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.0/README.md
216
217
  bug_tracker_uri: https://github.com/arturictus/sidekiq_alive/issues
217
218
  post_install_message:
218
219
  rdoc_options: []