Module: DatadogBackup::ThreadPool

Defined in:
lib/datadog_backup/thread_pool.rb

Overview

Used by CLI and Dashboards to size thread pool according to available CPU resourcess.

Constant Summary collapse

TPOOL =
::Concurrent::ThreadPoolExecutor.new(
  min_threads: [2, Concurrent.processor_count].max,
  max_threads: [2, Concurrent.processor_count].max * 2,
  fallback_policy: :abort
)

Class Method Summary collapse

Class Method Details

.shutdownObject



21
22
23
24
25
26
27
28
# File 'lib/datadog_backup/thread_pool.rb', line 21

def self.shutdown
  LOGGER.fatal 'Shutdown signal caught. Performing orderly shut down of thread pool. Press Ctrl+C again to forcibly shut down, but be warned, DATA LOSS MAY OCCUR.'
  TPOOL.shutdown
  TPOOL.wait_for_termination
rescue SystemExit, Interrupt
  LOGGER.fatal 'OK Nuking, DATA LOSS MAY OCCUR.'
  TPOOL.kill
end

.watcherObject



12
13
14
15
16
17
18
19
# File 'lib/datadog_backup/thread_pool.rb', line 12

def self.watcher
  Thread.new(TPOOL) do |pool|
    while pool.queue_length.positive?
      sleep 2
      LOGGER.info("#{pool.queue_length} tasks remaining for execution.")
    end
  end
end