Module: Sidekiq::ProcessManager

Defined in:
lib/sidekiq/process_manager.rb,
lib/sidekiq/process_manager/manager.rb,
lib/sidekiq/process_manager/version.rb

Defined Under Namespace

Classes: Manager

Constant Summary collapse

VERSION =
File.read(File.expand_path("../../../VERSION", __dir__)).strip

Class Method Summary collapse

Class Method Details

.after_fork(&block) ⇒ Object



14
15
16
17
# File 'lib/sidekiq/process_manager.rb', line 14

def after_fork(&block)
  @after_fork ||= []
  @after_fork << block
end

.before_fork(&block) ⇒ Object



9
10
11
12
# File 'lib/sidekiq/process_manager.rb', line 9

def before_fork(&block)
  @before_fork ||= []
  @before_fork << block
end

.parse_max_memory(value) ⇒ Float?

Parse a max memory value into a number of bytes. The value can be a plain number of bytes or a number suffixed with "m" for megabytes or "g" for gigabytes (case insensitive).

Parameters:

  • value (String, nil)

    The value to parse.

Returns:

  • (Float, nil)

    The number of bytes or nil if the value is blank.

Raises:

  • (ArgumentError)

    If the value cannot be parsed.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/sidekiq/process_manager.rb', line 44

def parse_max_memory(value)
  value = value.to_s.strip
  return nil if value.empty?

  matched = value.match(/\A(\d+(?:\.\d+)?)([mg]?)\z/i)
  raise ArgumentError.new("Invalid max memory value: #{value.inspect}") unless matched

  bytes = matched[1].to_f
  case matched[2].downcase
  when "m"
    bytes *= 1024**2
  when "g"
    bytes *= 1024**3
  end

  bytes
end

.run_after_fork_hooksObject



28
29
30
31
32
33
34
35
# File 'lib/sidekiq/process_manager.rb', line 28

def run_after_fork_hooks
  if defined?(@after_fork) && @after_fork
    @after_fork.each do |block|
      block.call
    end
  end
  @after_fork = nil
end

.run_before_fork_hooksObject



19
20
21
22
23
24
25
26
# File 'lib/sidekiq/process_manager.rb', line 19

def run_before_fork_hooks
  if defined?(@before_fork) && @before_fork
    @before_fork.each do |block|
      block.call
    end
  end
  @before_fork = nil
end