process_bot 0.1.22 → 0.1.23
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 +4 -4
- data/CHANGELOG.md +1 -0
- data/Gemfile.lock +2 -2
- data/lib/process_bot/process/runner.rb +19 -3
- data/lib/process_bot/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f3af0757fbd8fdac9c26eecdd368c222da9a659d491c64ee16d5d7fa0b1235c3
|
|
4
|
+
data.tar.gz: 7faf33b03baf64de58f27086351d553f0cbf777dc78b360fbcda2d9b82aecc04
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 36f931dc6159ac509769c9e37ca8cf42972f6035ba58f1f311b105461acc7109a8a205690366b77fdb99cdd49c0ddfded4e2bcaec69c2357f32117776b5d0d35
|
|
7
|
+
data.tar.gz: 98e49815e07c19d8bc6e374577cd83236ded5f78a295fbfbf6c662317ede6403a33254b55edd564030d3c8617fa124f0fa77d72d7a18b71d3e05f60a5e932ab8
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
- Flush log output immediately so Capistrano can stream it.
|
|
7
7
|
- Bump version to 0.1.21.
|
|
8
8
|
- Add optional Sidekiq restart overlap and a new ProcessBot restart command.
|
|
9
|
+
- Guard stop-related process scanning when subprocess PID/PGID is unavailable and fail stop loudly.
|
|
9
10
|
|
|
10
11
|
## [0.1.0] - 2022-04-03
|
|
11
12
|
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
process_bot (0.1.
|
|
4
|
+
process_bot (0.1.23)
|
|
5
5
|
knjrbfw (>= 0.0.116)
|
|
6
6
|
pry
|
|
7
7
|
rake
|
|
@@ -61,7 +61,7 @@ GEM
|
|
|
61
61
|
rspec-mocks (3.13.7)
|
|
62
62
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
63
63
|
rspec-support (~> 3.13.0)
|
|
64
|
-
rspec-support (3.13.
|
|
64
|
+
rspec-support (3.13.7)
|
|
65
65
|
rubocop (1.82.1)
|
|
66
66
|
json (~> 2.3)
|
|
67
67
|
language_server-protocol (~> 3.17.0.2)
|
|
@@ -65,7 +65,11 @@ class ProcessBot::Process::Runner
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
def subprocess_pgid
|
|
68
|
-
@subprocess_pgid
|
|
68
|
+
return @subprocess_pgid if instance_variable_defined?(:@subprocess_pgid)
|
|
69
|
+
|
|
70
|
+
@subprocess_pgid = Process.getpgid(subprocess_pid) if subprocess_pid
|
|
71
|
+
rescue Errno::ESRCH
|
|
72
|
+
@subprocess_pgid = nil
|
|
69
73
|
end
|
|
70
74
|
|
|
71
75
|
def sidekiq_app_name
|
|
@@ -74,6 +78,8 @@ class ProcessBot::Process::Runner
|
|
|
74
78
|
|
|
75
79
|
def related_processes
|
|
76
80
|
related_processes = []
|
|
81
|
+
process_group_id = subprocess_pgid
|
|
82
|
+
return related_processes unless process_group_id
|
|
77
83
|
|
|
78
84
|
Knj::Unix_proc.list do |process|
|
|
79
85
|
begin
|
|
@@ -82,7 +88,7 @@ class ProcessBot::Process::Runner
|
|
|
82
88
|
# Process no longer running
|
|
83
89
|
end
|
|
84
90
|
|
|
85
|
-
related_processes << process if
|
|
91
|
+
related_processes << process if process_group_id == process_pgid
|
|
86
92
|
end
|
|
87
93
|
|
|
88
94
|
related_processes
|
|
@@ -90,6 +96,8 @@ class ProcessBot::Process::Runner
|
|
|
90
96
|
|
|
91
97
|
def related_sidekiq_processes
|
|
92
98
|
related_sidekiq_processes = []
|
|
99
|
+
process_group_id = subprocess_pgid
|
|
100
|
+
return related_sidekiq_processes unless process_group_id
|
|
93
101
|
|
|
94
102
|
Knj::Unix_proc.list("grep" => "sidekiq") do |process|
|
|
95
103
|
cmd = process.data.fetch("cmd")
|
|
@@ -103,7 +111,7 @@ class ProcessBot::Process::Runner
|
|
|
103
111
|
# Process no longer running
|
|
104
112
|
end
|
|
105
113
|
|
|
106
|
-
related_sidekiq_processes << process if
|
|
114
|
+
related_sidekiq_processes << process if process_group_id == sidekiq_pgid
|
|
107
115
|
end
|
|
108
116
|
end
|
|
109
117
|
|
|
@@ -111,6 +119,8 @@ class ProcessBot::Process::Runner
|
|
|
111
119
|
end
|
|
112
120
|
|
|
113
121
|
def stop_related_processes
|
|
122
|
+
ensure_subprocess_pgid_for_stop!
|
|
123
|
+
|
|
114
124
|
loop do
|
|
115
125
|
processes = related_processes
|
|
116
126
|
|
|
@@ -128,6 +138,12 @@ class ProcessBot::Process::Runner
|
|
|
128
138
|
end
|
|
129
139
|
end
|
|
130
140
|
|
|
141
|
+
def ensure_subprocess_pgid_for_stop!
|
|
142
|
+
return if subprocess_pgid
|
|
143
|
+
|
|
144
|
+
raise "Unable to stop related processes because subprocess PGID could not be resolved (subprocess PID: #{subprocess_pid.inspect})"
|
|
145
|
+
end
|
|
146
|
+
|
|
131
147
|
def find_sidekiq_pid
|
|
132
148
|
Thread.new do
|
|
133
149
|
wait_for_sidekiq_pid
|
data/lib/process_bot/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: process_bot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.23
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- kaspernj
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-02-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: knjrbfw
|