sidekiq_liveness 0.1.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 +7 -0
- data/lib/sidekiq_liveness.rb +31 -0
- data/lib/sidekiq_liveness/server.rb +37 -0
- data/lib/sidekiq_liveness/version.rb +5 -0
- metadata +100 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 53099c6f08852e631371a7ef1145ca843787e113f888f3b377f9f3730fa07c96
|
4
|
+
data.tar.gz: 0d0b3048ef1625c6ea69441d5cd7b80c164d39b7420d433d9472823f3195ea07
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5f35c2326f452a14f8c94cbb0c24c9d341dfda3ce1ab7a5d175eec3c501246e7e5ce6b8aeb115ce7c2b4b9a4e1e8351e0f763071b783181e7906eb14996442ac
|
7
|
+
data.tar.gz: 5e3f90d675f3a9361de074785d9466718b1611e01d1975fab41a9b20ae481b56e8b65218f5359babbbd6dcc921992f521fe07aa8e932aed767eabff404c9139c
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq"
|
4
|
+
require "sidekiq/api"
|
5
|
+
require_relative "sidekiq_liveness/server"
|
6
|
+
require_relative "sidekiq_liveness/version"
|
7
|
+
|
8
|
+
module SidekiqLiveness
|
9
|
+
def self.start
|
10
|
+
Sidekiq.configure_server do |config|
|
11
|
+
config.on(:startup) do
|
12
|
+
@server_pid = fork do
|
13
|
+
SidekiqLiveness::Server.run!
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
config.on(:shutdown) do
|
18
|
+
Process.kill("TERM", @server_pid) unless @server_pid.nil?
|
19
|
+
Process.wait(@server_pid) unless @server_pid.nil?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.alive?
|
25
|
+
# Find current process if exists
|
26
|
+
process = Sidekiq::ProcessSet.new.find { |p| p["pid"] == ::Process.ppid }
|
27
|
+
return false unless process
|
28
|
+
|
29
|
+
process["beat"] > (Time.now.to_i - 15)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rack"
|
4
|
+
|
5
|
+
module SidekiqLiveness
|
6
|
+
class Server
|
7
|
+
class << self
|
8
|
+
def run!
|
9
|
+
handler = Rack::Handler.get("webrick")
|
10
|
+
|
11
|
+
Signal.trap("TERM") { handler.shutdown }
|
12
|
+
|
13
|
+
handler.run(self, Port: port, Host: "0.0.0.0")
|
14
|
+
end
|
15
|
+
|
16
|
+
def call(env)
|
17
|
+
if Rack::Request.new(env).path != path
|
18
|
+
[404, {}, [""]]
|
19
|
+
elsif SidekiqLiveness.alive?
|
20
|
+
[200, {}, [""]]
|
21
|
+
else
|
22
|
+
[500, {}, [""]]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def port
|
29
|
+
ENV.fetch("SIDEKIQ_LIVENESS_PORT") { 7433 }
|
30
|
+
end
|
31
|
+
|
32
|
+
def path
|
33
|
+
ENV.fetch("SIDEKIQ_LIVENESS_PATH") { "/healthz" }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sidekiq_liveness
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mikko Kokkonen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-02-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sidekiq
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '6'
|
34
|
+
- - ">"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '6'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '6'
|
44
|
+
- - ">"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '6'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: webrick
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.6'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.6'
|
61
|
+
description: SidekiqLiveness offers a solution to add liveness probe of a Sidekiq
|
62
|
+
instance.
|
63
|
+
email:
|
64
|
+
- mikko.kokkonen@itsmycargo.com
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- lib/sidekiq_liveness.rb
|
70
|
+
- lib/sidekiq_liveness/server.rb
|
71
|
+
- lib/sidekiq_liveness/version.rb
|
72
|
+
homepage: https://github.com/mikian/sidekiq_liveness
|
73
|
+
licenses:
|
74
|
+
- MIT
|
75
|
+
metadata:
|
76
|
+
bug_tracker_uri: https://github.com/mikian/sidekiq_liveness/issues
|
77
|
+
changelog_uri: https://github.com/mikian/sidekiq_liveness/blob/main/CHANGELOG.md
|
78
|
+
documentation_uri: https://github.com/mikian/sidekiq_liveness
|
79
|
+
homepage_uri: https://github.com/mikian/sidekiq_liveness
|
80
|
+
source_code_uri: https://github.com/mikian/sidekiq_liveness
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.3.0
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubygems_version: 3.2.3
|
97
|
+
signing_key:
|
98
|
+
specification_version: 4
|
99
|
+
summary: Liveness probe for Sidekiq on Kubernetes deployments.
|
100
|
+
test_files: []
|