* Sketch out some failing tests to capture the behavior
Co-authored-by: jeffcarbs <jeff.carbonella@gmail.com>
* Implement Sidekiq::Client.perform_bulk
Co-authored-by: jeffcarbs <jeff.carbonella@gmail.com>
* Allow .perform_bulk to operate on different batch sizes
Co-authored-by: jeffcarbs <jeff.carbonella@gmail.com>
* Write a failing test to capture the Sidekiq::Worker::Setter.perform_bulk behavior
Co-authored-by: jeffcarbs <jeff.carbonella@gmail.com>
* Implement Sidekiq::Worker::Setter.perform_bulk
Co-authored-by: jeffcarbs <jeff.carbonella@gmail.com>
* Write a small comment for to document the method
Co-authored-by: jeffcarbs <jeff.carbonella@gmail.com>
* Add a Changes.md entry
Co-authored-by: jeffcarbs <jeff.carbonella@gmail.com>
We don't need the commands here to be atomic so we use pipelined instead
to save us some overhead from MULTI
Co-authored-by: Heinrich Lee Yu <heinrich@gitlab.com>
These errors can occur during Sidekiq's long-running job fetching
command. This uses Redis' blocking BRPOP primitive. On failover in a
cluster setup, these commands are interrupted by the server.
This error causes the worker threads to be restarted, but as they are
bubbled up to the top, they cause a lot of spam in our error logging
systems. As related errors from other commands are being handled (see
* Persist live poll status in browser localStorage
* Prefix localStorage variables with 'sidekiq'
* Minor fix for default handling in localStorage timeInterval parsing
* Simplify Web UI sessions
Remove all of the hacks and support infrastructure around Rack sessions. Rails provides this by default so we don't need it for 95% of users. The other 5% need to provide a Rack session.
This is a big change and has the potential to break installs so it deserves at least a minor version bump.
See also #4671, #4728 and many others.
If using `with` to add logging context, any context that has the same
keys as existing context will disappear after the with block completes,
instead of reverting back to the original context.
This fixes that by restoring the original context directly instead of
just deleting the keys from the `with` context.
The arguments are always ignored, but this allows the block to be passed
to a method that yields arguments:
class TaggedLoggingMiddleware
def call(*, &block)
Rails.logger.tagged("my cool job", &block)
end
end
1. Remove unused methods
2. Remove unused and unnecessary features
3. Add basic tests
The session token is stored server-side and never given to the client.
A masked token is generated for each request which can be inserted into forms to be POSTed.
In 3f9c4bf9 the Redis connection options began to be cloned (via dumping
and re-marshalling) to avoid issues with password redaction in logging
altering the connection options and breaking authentication with Sentinels.
Unfortunately, this change caused an exception on boot for users of
Redis over SSL. The `OpenSSL::X509::Store` object used for SSL certs is
not yet dumpable in the bundled OpenSSL wrapper for current Rubies
(although it does in master as of ruby/openssl#281).
The fix here prunes the `ssl_params` options out of the Redis
configuration options before the dumping and marshalling. It's probably
better not to include those in logging anyway for privacy purposes.
Fix#4531