sidekiq_alive 2.1.8 → 2.2.0

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: '070807205b4f9046f51b90908873679c0cd716d1beff188b8d9f275b18f77594'
4
- data.tar.gz: 60b050e4a93a3e98602e96c221b50e2398f7d40e2d7358c3c80429f59d0830fb
3
+ metadata.gz: d778567938366cd3b85b6ccf88d43976b3e237a2d36546e0d4167cf6d04a61a8
4
+ data.tar.gz: 0dba8bfaf120451d8fed00ab53466a6b0d2101b64197acb64b562f7e28fef0d0
5
5
  SHA512:
6
- metadata.gz: cb15f99935b3ef0f0c4bc297e07d741b3f0bd3dbefbe72a19cfcc512098117317405f54372adfc10577a233f9e70c05ad8288ec1a6c1323e5499214dc3888132
7
- data.tar.gz: b99e019282d2b9313b1ccd32cd151da5ebfc1ba30f2c335b03de16e38689d412fa48f6c60fb70b453a65fb97faa1c1867fdf733603d7e46b7547966f1cd26889
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.8"
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
 
@@ -70,7 +70,7 @@ module SidekiqAlive
70
70
  jobs = if Helpers.sidekiq_5
71
71
  schedule_set.select { |job| job.klass == "SidekiqAlive::Worker" && job.queue == current_queue }
72
72
  else
73
- schedule_set.scan('"class":"SidekiqAlive::Worker"')
73
+ schedule_set.scan('"class":"SidekiqAlive::Worker"').select { |job| job.queue == current_queue }
74
74
  end
75
75
  logger.info("[SidekiqAlive] Purging #{jobs.count} pending for #{hostname}")
76
76
  jobs.each(&:delete)
@@ -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.8
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: 2022-12-29 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.8/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: []