Sha256: c61e397e4e14c22e98def735de295aa3a3a0c33d391bd2ee3fe92007caf068bc

Contents?: true

Size: 978 Bytes

Versions: 5

Compression:

Stored size: 978 Bytes

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require 'sidekiq'
require 'sidekiq/cli'

class SidekiqServer
  include Singleton

  THREAD_JOIN_TIMEOUT = 30

  attr_reader :queue_name

  def initialize
    @queue_name = "sidekiq#{Process.pid}"
    @sidekiq = Sidekiq::CLI.instance
  end

  def run(file="test_worker.rb")
    @sidekiq.parse(["--require", File.join(File.dirname(__FILE__), file),
                    "--queue", "#{queue_name},1"])
    @cli_thread = Thread.new { @sidekiq.run }
  end

  # If we just let the process go away, occasional timing issues cause the
  # Launcher actor in Sidekiq to throw a fuss and exit with a failed code.
  def stop
    puts "Trying to stop Sidekiq gracefully from #{$$}"
    Process.kill("INT", $$)
    if @cli_thread.join(THREAD_JOIN_TIMEOUT).nil?
      puts "#{$$} Sidekiq::CLI thread timeout on exit"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
newrelic_rpm-4.1.0.333 test/multiverse/suites/sidekiq/sidekiq_server.rb
newrelic_rpm-4.0.0.332 test/multiverse/suites/sidekiq/sidekiq_server.rb
newrelic_rpm-3.18.1.330 test/multiverse/suites/sidekiq/sidekiq_server.rb
newrelic_rpm-3.18.0.329 test/multiverse/suites/sidekiq/sidekiq_server.rb
newrelic_rpm-3.17.2.327 test/multiverse/suites/sidekiq/sidekiq_server.rb