class Airbrake::ThreadPool

def close

Raises:
  • (Airbrake::Error) - when invoked more than one time

Returns:
  • (void) -
def close
  threads = @mutex.synchronize do
    raise Airbrake::Error, 'this thread pool is closed already' if @closed
    unless @queue.empty?
      msg = "#{LOG_LABEL} waiting to process #{@queue.size} task(s)..."
      logger.debug("#{msg} (Ctrl-C to abort)")
    end
    @worker_size.times { @queue << :stop }
    @closed = true
    @workers.list.dup
  end
  threads.each(&:join)
  logger.debug("#{LOG_LABEL} #{@name} thread pool closed")
end