foreman_maintain 1.1.2 → 1.1.3

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: a54e65aa9144d233ab256305556eebb5467cfd5c4fd9aa99b7971a13fdd81bac
4
- data.tar.gz: ce6c5012139cc01bb4dee7f7cdb30a569ce3f05399d14d81d1c1cbf835588b31
3
+ metadata.gz: c5223427d91fd37a6dda0c341fada111c6555378cca050db661e81e4807bac53
4
+ data.tar.gz: 0ccf33ffe89749016e9b943b9421427f456e524fcd8a1d2f44a0aa3a02c7af8d
5
5
  SHA512:
6
- metadata.gz: b94662b70f86ed91889688a3288dbe67d44ec46c9b1d3830f5a9687b0293500048ffd2df86162964e417a0ffa1514d78a43a0c4a1f7168848986bb92abe9828e
7
- data.tar.gz: 0f2351eddc6236e7be70c44bc94e0ac4ae24b19b8f21dcf9d0a726a8897c4bea34bcb5bd5562827d1efb3400c421e2807288d56d1f5a03d5685ab2c402aa21b7
6
+ metadata.gz: fe155208da6aa978763d158e89f6552897a4d26e7aae09af6182c5d055988348176693050a5197f07203366083902bda7a76cb2d569298e52f7aa70723dc9ee0
7
+ data.tar.gz: c323b7a0c47767f86cfbc58b1d3257d0ce005f80ae9d73cdb908e98796db28e9d1044348bd78b35baef8bef714fbc8a59cc6925222db60bb80fe3b505594bb20
@@ -143,6 +143,9 @@ module ForemanMaintain
143
143
  end
144
144
 
145
145
  def version(value)
146
+ # packages versions, especially on Debian, sometimes include a + or a ~,
147
+ # but Gem::Version can't handle that.
148
+ value.gsub!(/[+~]/, '-')
146
149
  Version.new(value)
147
150
  end
148
151
 
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '1.1.2'.freeze
2
+ VERSION = '1.1.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_maintain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-30 00:00:00.000000000 Z
11
+ date: 2022-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -113,7 +113,6 @@ description: Provides various features that helps keeping the Foreman/Satellite
113
113
  email: inecas@redhat.com
114
114
  executables:
115
115
  - foreman-maintain
116
- - passenger-recycler
117
116
  - foreman-maintain-complete
118
117
  - foreman-maintain-rotate-tar
119
118
  extensions: []
@@ -126,12 +125,10 @@ files:
126
125
  - bin/foreman-maintain
127
126
  - bin/foreman-maintain-complete
128
127
  - bin/foreman-maintain-rotate-tar
129
- - bin/passenger-recycler
130
128
  - config/foreman-maintain.completion
131
129
  - config/foreman_maintain.yml.example
132
130
  - config/foreman_maintain.yml.packaging
133
131
  - config/hammer.yml.example
134
- - config/passenger-recycler.yaml
135
132
  - definitions/checks/backup/certs_tar_exist.rb
136
133
  - definitions/checks/backup/directory_ready.rb
137
134
  - definitions/checks/candlepin/db_up.rb
@@ -281,7 +278,6 @@ files:
281
278
  - definitions/procedures/packages/unlock_versions.rb
282
279
  - definitions/procedures/packages/update.rb
283
280
  - definitions/procedures/packages/update_all_confirmation.rb
284
- - definitions/procedures/passenger_recycler.rb
285
281
  - definitions/procedures/prep_6_10_upgrade.rb
286
282
  - definitions/procedures/pulp/cleanup_old_metadata_files.rb
287
283
  - definitions/procedures/pulp/migrate.rb
@@ -365,7 +361,6 @@ files:
365
361
  - extras/foreman_protector/foreman-protector.conf
366
362
  - extras/foreman_protector/foreman-protector.whitelist
367
363
  - extras/foreman_protector/yum/foreman-protector.py
368
- - extras/passenger-recycler.cron
369
364
  - lib/foreman_maintain.rb
370
365
  - lib/foreman_maintain/check.rb
371
366
  - lib/foreman_maintain/cli.rb
@@ -1,89 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Trivial Passenger memory monitor and recycler. See the configuration file
4
- # /etc/passenger-recycler.yaml for options. Execute via SCL.
5
- #
6
- require 'yaml'
7
-
8
- CONFIG = {}.freeze
9
- CONFIG_FILE = '/etc/passenger-recycler.yaml'.freeze
10
- CONFIG = YAML.load_file(CONFIG_FILE) if File.readable?(CONFIG_FILE)
11
- exit 0 unless CONFIG[:ENABLED]
12
-
13
- def running?(pid)
14
- Process.getpgid(pid) != -1
15
- rescue Errno::ESRCH
16
- false
17
- end
18
-
19
- def debug(msg)
20
- puts(msg) if CONFIG[:DEBUG]
21
- end
22
-
23
- def verbose(msg)
24
- puts(msg) if CONFIG[:VERBOSE]
25
- end
26
-
27
- def kill(pid)
28
- return unless running?(pid) && CONFIG[:KILL_BUSY]
29
- verbose "Process #{pid} is still running, sending SIGKILL"
30
- Process.kill 'KILL', pid
31
- sleep 5
32
- end
33
-
34
- def process_status?(pid)
35
- if running?(pid)
36
- verbose "Process #{pid} still terminating, moving on..."
37
- else
38
- verbose "Process successfully #{pid} terminated"
39
- end
40
- end
41
-
42
- def show_passenger_status(status_messages)
43
- status_messages.each { |msg| verbose msg }
44
- end
45
-
46
- require 'phusion_passenger'
47
- PhusionPassenger.locate_directories
48
- require 'phusion_passenger/platform_info'
49
- require 'phusion_passenger/platform_info/ruby'
50
- require 'phusion_passenger/admin_tools/memory_stats'
51
- stats = PhusionPassenger::AdminTools::MemoryStats.new
52
- killed = 0
53
-
54
- def get_process_start(pid)
55
- `ps -p#{pid} -o start=`.strip
56
- rescue StandardError => e
57
- verbose "Error: #{e.message} \nReturning '?'"
58
- '?'
59
- end
60
-
61
- def get_rss_info(process)
62
- get_pid_mem_kb = process.private_dirty_rss || process.rss
63
- get_pid_mem_mb = format('%.0f', get_pid_mem_kb / 1024)
64
- [get_pid_mem_kb, get_pid_mem_mb]
65
- end
66
-
67
- stats.passenger_processes.each do |p|
68
- pid = p.pid.to_i
69
- started = get_process_start(pid)
70
- get_pid_mem_kb, get_pid_mem_mb = get_rss_info(p)
71
- debug "Checking #{pid} with RSS of #{get_pid_mem_kb}"
72
- next unless get_pid_mem_kb > CONFIG[:MAX_PRIV_RSS_MEMORY]
73
- status_ps = `ps -p#{pid} -u`
74
- status_all = `passenger-status 2> /dev/null`
75
- status_backtraces = `passenger-status --show=backtraces 2>/dev/null`
76
- verbose("Terminating #{pid} (started #{started}) with private RSS size of #{get_pid_mem_mb} MB")
77
- begin
78
- Process.kill 'SIGUSR1', pid
79
- sleep CONFIG[:GRACEFUL_SHUTDOWN_SLEEP]
80
- kill(pid)
81
- process_status?(pid)
82
- show_passenger_status([status_ps, status_all, status_backtraces]) if CONFIG[:SEND_STATUS]
83
- killed += 1
84
- exit(1) if killed >= CONFIG[:MAX_TERMINATION]
85
- rescue Errno::ESRCH
86
- puts "#{Process.pid}: #{pid} is NOT running"
87
- end
88
- end
89
- exit 0
@@ -1,38 +0,0 @@
1
- ---
2
- #
3
- # Trivial Passenger memory monitor. By default it is executed from cron every
4
- # five minutes and it kills processes exceeding the RSS memory threashold
5
- # configured with MAX_PRIV_RSS_MEMORY. Up to MAX_TERMINATION processes is
6
- # terminated during one execution.
7
- #
8
-
9
- # Set to 'false' to completely disable this script.
10
- :ENABLED: true
11
-
12
- # RSS memory threashold to recycle processes (in kB).
13
- :MAX_PRIV_RSS_MEMORY: 2_000_000
14
-
15
- # Controls amount of processes killed during one run. This number should be
16
- # smaller by one or two than maximum allowed amount of processes by passenger
17
- # (defaults to 6) so there is at least one process left.
18
- :MAX_TERMINATION: 1
19
-
20
- # Kill processes which do not terminate gracefully using SIGKILL after
21
- # GRACEFUL_SHUTDOWN_SLEEP period.
22
- :KILL_BUSY: true
23
-
24
- # Amount of seconds to wait for graceful shutdown (SIGTERM) until a process
25
- # kill (SIGKILL) is sent. Must be lower than 15 minutes (900 seconds). This
26
- # gives Passenger some extra time for respawning application before another
27
- # process is terminated.
28
- :GRACEFUL_SHUTDOWN_SLEEP: 90
29
-
30
- # Print 'passenger-status' and 'ps' output before termination to get some extra
31
- # information via email from cron. Only printed when a kill is performed.
32
- :SEND_STATUS: true
33
-
34
- # Print verbose information "Process terminating" or "Process killed".
35
- :VERBOSE: true
36
-
37
- # Print extra debugging information.
38
- :DEBUG: false
@@ -1,14 +0,0 @@
1
- class Procedures::PassengerRecycler < ForemanMaintain::Procedure
2
- metadata do
3
- description 'Perform Passenger memory recycling'
4
-
5
- confine do
6
- execute?('which passenger-recycler')
7
- end
8
- end
9
-
10
- def run
11
- passenger_recycler_path = execute('which passenger-recycler')
12
- execute!(passenger_recycler_path)
13
- end
14
- end
@@ -1,3 +0,0 @@
1
- # Configuration file /etc/cron.d/passenger-recycler to run passenger-recycler
2
- # every 15 minutes.
3
- */15 * * * * root /usr/bin/passenger-recycler