Potentially breaking changes
- Implemented named arguments for several classes. (Breaking if you instantiated these classes with arguments)
HerokuPlatformScaler
BinaryScalingStrategy
LinearScalingStrategy
DelayedShutdown
- As consequence of above, specifies min ruby version 2.1
- Remove depreciated ENV variables
HEROKU_ACCESS_TOKEN
andHERKOU_APP
HerokuScaler
has been removed, as the old API has been disabled by Heroku. (See https://devcenter.heroku.com/changelog-items/1181) Consider to useHerokuPlatformScaler
.
- Heroku has claimed the
HEROKU_
ENV prefix for Herkou-16 stack. The preferred variables are nowAUTOSCALER_HEROKU_APP
andAUTOSCALER_HEROKU_ACCESS_TOKEN
. (The complex example has been similarly updated.) The old ENV variables will still be accepted, with a warning, but may be removed in a major release. (HerokuScaler was not updated.) - Added an obsolescence warning to HerokuScaler, since the old API is no longer available. It may be removed in a major release.
- Update version spec to Sidekiq 5
- redis gem implements
call
for something else since 3.3.0, which was confusing duck sniffing.
- Rewrite ThreadServer use a singleton monitor thread; it was incorrectly creating one per middleware instance, which was per-job
- Replace celluloid monitor with thread based middleware for Sidekiq 4.0
- Tests no longer use use redis namespace
- Require Sidekiq 3.5
- You may use
HerokuPlatformScaler
andHEROKU_ACCESS_TOKEN
in place ofHerokuScaler
andHEROKU_API_KEY
- QueueSystem#workers returns the number of engaged SK processes.
- Linear Scaling Strategy will not scale down past number of active workers. Assumes 1-1 SK process/dyno mapping.
- Calls the SideKiq quiet api when shutting down
- Count workers currently running (Joel Van Horn)
- Update gems and use RSpec expect syntax (giviger)
- CounterCacheRedis.new now takes a third parameter
worker_type
, a string used in the Redis cache key. Allows for caching counts for various types of workers, not justworker
- Support for Sidekiq 3.0
- Strategy wrapper to ignore scheduled and retrying queues. Usage:
new_strategy = IgnoreScheduledAndRetrying.new(my_old_strategy)
- LinearScalingStrategy now accepts a minimum amount of work (as a percentage of worker capacity) required to begin scaling up. E.g LinearScalingStrategy.new(10, 4, 0.5) will scale to one worker after 40.5 = 2 jobs are enqueued, and a maximum of 10 workers at 104 jobs. Old behavior is preserved with a default value of 0.
- Extracted caching of Heroku worker counts and added experimental Redis cache:
scaler.counter_cache = Autoscaler::CounterCacheRedis.new(Sidekiq.method(:redis))
- Now rescues Heroku::Api::Errors in addition to Excon::Errors
- Added Autoscaler::LinearScalingStrategy
- EntireQueuSystem#queued always returns an integer
- Excon errors from the Heroku API are caught be default. See
HerokuScaler#exception_handler
to override behavior - Client side scaling occurs after enquing the job, previously it was before.
- Experimental:
Client#set_initial_workers
to start workers on main process startup; typically: Autoscaler::Sidekiq::Client.add_to_chain(chain, 'default' => heroku).set_initial_workers - Ensure that timeout is documented as being in seconds
- Convert gemspec to wildcard file selection
- Missing file from gemspec
- Experimental: The default scaling logic is contained in BinaryScalingStrategy. A strategy object can be passed instead of timeout to the server middleware.
- Downscale method changed from busy-waiting workers to a separate monitor process
- Minimum Sidekiq version raised to 2.7 to take advantage of Worker API
- Internal refactoring
- Autoscaler::StubScaler may be used for local testing
- Separate background activity flags to avoid crosstalk between processes
- Raise minimum Sidekiq version to 2.6.1 to take advantage of Stats API
- Inspect scheduled and retry sets to see if they match
specified_queues
- Testing: Refactor server middleware tests
- The
retry
andscheduled
queues are now considered for shutdown - Testing: Guard starts up an isolated redis instance
- Typo correction
- Loosen Sidekiq version dependency
- Add changelog
- Add changelog, readme, and examples to gem files list