Sidekiq v6.0.1 Release Notes

Release Date: 2019-10-02 // 16 days ago
    • 🐎 Performance tuning, Sidekiq should be 10-15% faster now [#4303, 4299, 4269, fatkodima]
    • 💻 Dark Mode support in Web UI (further design polish welcome!) [#4227, mperham, fatkodima, silent-e]
    • 👷 Job-specific log levels, allowing you to turn on debugging for problematic workers. [fatkodima, #4287] ruby MyWorker.set(log_level: :debug).perform_async(...)
    • 👷 Ad-hoc job tags. You can tag your jobs with, e.g, subdomain, tenant, country, locale, application, version, user/client, "alpha/beta/pro/ent", types of jobs, teams/people responsible for jobs, additional metadata, etc. Tags are shown on different pages with job listings. Sidekiq Pro users can filter based on them [fatkodima, #4280] ruby class MyWorker include Sidekiq::Worker sidekiq_options tags: ['bank-ops', 'alpha'] ... end
    • ⏱ Fetch scheduled jobs in batches before pushing into specific queues. This will decrease enqueueing time of scheduled jobs by a third. [fatkodima, #4273] ScheduledSet with 10,000 jobs Before: 56.6 seconds After: 39.2 seconds
    • Compress error backtraces before pushing into Redis, if you are storing error backtraces, this will halve the size of your RetrySet in Redis [fatkodima, #4272] RetrySet with 100,000 jobs Before: 261 MB After: 129 MB
    • 👌 Support display of ActiveJob 6.0 payloads in the Web UI [#4263]
    • Add SortedSet#scan for pattern based scanning. For large sets this API will be MUCH faster than standard iteration using each. [fatkodima, #4262] ruby Sidekiq::DeadSet.new.scan("UnreliableApi") do |job| job.retry end
    • 👷 Dramatically speed up SortedSet#find_job(jid) by using Redis's ZSCAN support, approx 10x faster. [fatkodima, #4259] zscan 0.179366 0.047727 0.227093 ( 1.161376) enum 8.522311 0.419826 8.942137 ( 9.785079)
    • ✅ Respect rails' generators test_framework option and gracefully handle extra worker suffix on generator [fatkodima, #4256]
    • ➕ Add ability to sort 'Enqueued' page on Web UI by position in the queue [fatkodima, #4248]
    • 👌 Support Client.push_bulk with different delays [fatkodima, #4243] ruby Sidekiq::Client.push_bulk("class" => FooJob, "args" => [[1], [2]], "at" => [1.minute.from_now.to_f, 5.minutes.from_now.to_f])
    • ✅ Easier way to test enqueuing specific ActionMailer and ActiveRecord delayed jobs. Instead of manually parsing embedded class, you can now test by fetching jobs for specific classes. [fatkodima, #4292] ruby assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs_for(FooMailer).size
    • ➕ Add sidekiqmon to gemspec executables [#4242]
    • Gracefully handle Sidekiq.logger = nil [#4240]
    • Inject Sidekiq::LogContext module if user-supplied logger does not include it [#4239]