Skip to content

Commit

Permalink
Merge pull request sidekiq#2288 from davydovanton/reduse-allocated
Browse files Browse the repository at this point in the history
Reduced by one third allocated memory for #perform_async method
  • Loading branch information
mperham committed Apr 5, 2015
2 parents cf7a9b6 + 02bbe62 commit df0a6cf
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 18 deletions.
7 changes: 6 additions & 1 deletion lib/sidekiq.rb
Expand Up @@ -30,6 +30,11 @@ module Sidekiq
dead_timeout_in_seconds: 180 * 24 * 60 * 60 # 6 months
}

DEFAULT_WORKER_OPTIONS = {
'retry' => true,
'queue' => 'default'
}

def self.❨╯°□°❩╯︵┻━┻
puts "Calm down, bro"
end
Expand Down Expand Up @@ -103,7 +108,7 @@ def self.default_worker_options=(hash)
end

def self.default_worker_options
defined?(@default_worker_options) ? @default_worker_options : { 'retry' => true, 'queue' => 'default' }
defined?(@default_worker_options) ? @default_worker_options : DEFAULT_WORKER_OPTIONS
end

def self.load_json(string)
Expand Down
2 changes: 1 addition & 1 deletion lib/sidekiq/api.rb
Expand Up @@ -384,7 +384,7 @@ def retry
raise "Retry not available on jobs which have not failed" unless item["failed_at"]
remove_job do |message|
msg = Sidekiq.load_json(message)
msg['retry_count'] = msg['retry_count'] - 1
msg['retry_count'] -= 1
Sidekiq::Client.push(msg)
end
end
Expand Down
26 changes: 15 additions & 11 deletions lib/sidekiq/client.rb
Expand Up @@ -211,19 +211,23 @@ def normalize_item(item)
raise(ArgumentError, "Message args must be an Array") unless item['args'].is_a?(Array)
raise(ArgumentError, "Message class must be either a Class or String representation of the class name") unless item['class'].is_a?(Class) || item['class'].is_a?(String)

if item['class'].is_a?(Class)
raise(ArgumentError, "Message must include a Sidekiq::Worker class, not class name: #{item['class'].ancestors.inspect}") if !item['class'].respond_to?('get_sidekiq_options')
normalized_item = item['class'].get_sidekiq_options.merge(item)
normalized_item['class'] = normalized_item['class'].to_s
normalized_hash(item['class'.freeze])
.each{ |key, value| item[key] = value if item[key].nil? }

item['class'.freeze] = item['class'.freeze].to_s
item['queue'.freeze] = item['queue'.freeze].to_s
item['jid'.freeze] ||= SecureRandom.hex(12)
item['enqueued_at'.freeze] ||= Time.now.to_f
item
end

def normalized_hash(item_class)
if item_class.is_a?(Class)
raise(ArgumentError, "Message must include a Sidekiq::Worker class, not class name: #{item_class.ancestors.inspect}") if !item_class.respond_to?('get_sidekiq_options'.freeze)
item_class.get_sidekiq_options
else
normalized_item = Sidekiq.default_worker_options.merge(item)
Sidekiq.default_worker_options
end

normalized_item['queue'] = normalized_item['queue'].to_s
normalized_item['jid'] ||= SecureRandom.hex(12)
normalized_item['enqueued_at'] ||= Time.now.to_f
normalized_item
end

end
end
5 changes: 1 addition & 4 deletions lib/sidekiq/redis_connection.rb
Expand Up @@ -7,10 +7,7 @@ class RedisConnection
class << self

def create(options={})
url = options[:url] || determine_redis_provider
if url
options[:url] = url
end
options[:url] ||= determine_redis_provider

# need a connection for Fetcher and Retry
size = options[:size] || (Sidekiq.server? ? (Sidekiq.options[:concurrency] + 2) : 5)
Expand Down
2 changes: 1 addition & 1 deletion lib/sidekiq/worker.rb
Expand Up @@ -64,7 +64,7 @@ def perform_in(interval, *args)
# can be true, false or an integer number of lines to save, default *false*
# :pool - use the given Redis connection pool to push this type of job to a given shard.
def sidekiq_options(opts={})
self.sidekiq_options_hash = get_sidekiq_options.merge((opts || {}).stringify_keys)
self.sidekiq_options_hash = get_sidekiq_options.merge(opts.stringify_keys)
end

def sidekiq_retry_in(&block)
Expand Down

0 comments on commit df0a6cf

Please sign in to comment.