Sha256: e60e8d1b02980ce3cd54502a1871e923fb1ab641a10f44312107a77c56292683

Contents?: true

Size: 1.85 KB

Versions: 19

Compression:

Stored size: 1.85 KB

Contents

require "sidekiq/component"
require "sidekiq/launcher"
require "sidekiq/metrics/tracking"

module Sidekiq
  class Embedded
    include Sidekiq::Component

    def initialize(config)
      @config = config
    end

    def run
      housekeeping
      fire_event(:startup, reverse: false, reraise: true)
      @launcher = Sidekiq::Launcher.new(@config, embedded: true)
      @launcher.run
      sleep 0.2 # pause to give threads time to spin up

      logger.info "Sidekiq running embedded, total process thread count: #{Thread.list.size}"
      logger.debug { Thread.list.map(&:name) }
    end

    def quiet
      @launcher&.quiet
    end

    def stop
      @launcher&.stop
    end

    private

    def housekeeping
      logger.info "Running in #{RUBY_DESCRIPTION}"
      logger.info Sidekiq::LICENSE
      logger.info "Upgrade to Sidekiq Pro for more features and support: https://sidekiq.org" unless defined?(::Sidekiq::Pro)

      # touch the connection pool so it is created before we
      # fire startup and start multithreading.
      info = config.redis_info
      ver = Gem::Version.new(info["redis_version"])
      raise "You are connecting to Redis #{ver}, Sidekiq requires Redis 6.2.0 or greater" if ver < Gem::Version.new("6.2.0")

      maxmemory_policy = info["maxmemory_policy"]
      if maxmemory_policy != "noeviction"
        logger.warn <<~EOM


          WARNING: Your Redis instance will evict Sidekiq data under heavy load.
          The 'noeviction' maxmemory policy is recommended (current policy: '#{maxmemory_policy}').
          See: https://github.com/sidekiq/sidekiq/wiki/Using-Redis#memory

        EOM
      end

      logger.debug { "Client Middleware: #{@config.default_capsule.client_middleware.map(&:klass).join(", ")}" }
      logger.debug { "Server Middleware: #{@config.default_capsule.server_middleware.map(&:klass).join(", ")}" }
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
sidekiq-7.3.0 lib/sidekiq/embedded.rb
sidekiq-7.2.4 lib/sidekiq/embedded.rb
sidekiq-7.2.3 lib/sidekiq/embedded.rb
sidekiq-7.2.2 lib/sidekiq/embedded.rb
sidekiq-7.2.1 lib/sidekiq/embedded.rb
sidekiq-7.2.0 lib/sidekiq/embedded.rb
sidekiq-7.1.6 lib/sidekiq/embedded.rb
sidekiq-7.1.5 lib/sidekiq/embedded.rb
sidekiq-7.1.4 lib/sidekiq/embedded.rb
sidekiq-7.1.3 lib/sidekiq/embedded.rb
sidekiq-7.1.2 lib/sidekiq/embedded.rb
sidekiq-7.1.1 lib/sidekiq/embedded.rb
sidekiq-7.1.0 lib/sidekiq/embedded.rb
sidekiq-7.0.9 lib/sidekiq/embedded.rb
sidekiq-7.0.8 lib/sidekiq/embedded.rb
sidekiq-7.0.7 lib/sidekiq/embedded.rb
sidekiq-7.0.6 lib/sidekiq/embedded.rb
sidekiq-7.0.5 lib/sidekiq/embedded.rb
sidekiq-7.0.4 lib/sidekiq/embedded.rb