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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 393279b999e338c87046703fca4e6e1c22adc46ffe085a95bef758df831d3a47
4
- data.tar.gz: 852bd1ad1529685294bcc54be632c444f8748490519d41fd32bd963217098ec8
3
+ metadata.gz: f3af0757fbd8fdac9c26eecdd368c222da9a659d491c64ee16d5d7fa0b1235c3
4
+ data.tar.gz: 7faf33b03baf64de58f27086351d553f0cbf777dc78b360fbcda2d9b82aecc04
5
5
  SHA512:
6
- metadata.gz: 8e166f7a08badb085df25e770028432f4a40b5e024f7c4b363426388145e2fbce4c5b91a67e348d504c9c040b24c674ce03e1ba2c5d097d3fffa54a949549e3f
7
- data.tar.gz: 1fed86f6ca3b6c6dcc579f9cbe44f2d9796b6cdc18b08227a9d03f4a3814b6b806dfa0e154a5f63e17c533496a0720ffb32b336c3e98b3f9cd84958027e97563
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.22)
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.6)
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 ||= Process.getpgid(subprocess_pid)
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 subprocess_pgid == process_pgid
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 subprocess_pgid == sidekiq_pgid
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
@@ -1,3 +1,3 @@
1
1
  module ProcessBot
2
- VERSION = "0.1.22".freeze
2
+ VERSION = "0.1.23".freeze
3
3
  end
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.22
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-01-19 00:00:00.000000000 Z
11
+ date: 2026-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: knjrbfw