- Fix NoMethodError: undefined method 'application' for Rails:Module when Rails module is defined but not a full Rails app (#1799)
- Fix deprecation warnings in Redis#pipelined for redis 4.6 (#1806)
- Add Ruby syntax highlighting to remaining markdown docs (#1802)
- Fix pagination section (#1809)
- Fix
before_run
undefined local variable or methodrunner
(#1811)
- Added support for pausing all workers by setting the Redis key
pause-all-workers
to string value "true" (#1803)
- Escape HTML from the params to avoid XSS (#1790)
- Remove vegas as a dependency (#1780)
- Add support for specifying queues that workers should ignore when using globs
- Allow plugins to have spaces in their name (#1718)
- Add 'Retry Failed Jobs' button to Failed page
- Loading railtie when it did not exist #1765
- Fix closing parent Redis connection in child process after fork
- Fix the failed queues list on /queues UI when the RedisMultiQueue backend is used #1638
- Fix XSS via URL path in admin web UI queues view #1687
- Replace onclick handlers in server code to support Content Security Policies that don't allow 'unsafe-inline'
- Update jQuery from 1.12.4 to 3.6.0
-
Add requeue_queue method to Resque::Failure::Multiple #1659
-
Confirmation prompt in admin front-end before submitting the retry of all failed jobs. #1753
-
Railtie for default rake task setup when in Rails. #1715
-
Added two new hooks.
queue_empty
when the job queue empties and the worker becomes idleworker_exit
when the worker exits
See docs/HOOKS.md for further details. (@jeremywadsack)
- live poller shouldn't restart itself until it successds or fails. #1740
- Fix parsing worker_id when queue name includes colon. #1691
- Prune workers which haven't been registered but have set a heartbeat. #1751
Resque::Failure::Multiple.remove
did not pass on the queue parameter
- Fix Airbrake failure backend
- Fix failed jobs page "argument out of range" error
- Remove support for Rubies < 2.3
- Remove support to Rails < 4
- Reduce the number of redis calls when trying to get the list of queues
- Only run
eager_load!
ifRails.application.config.eager_load
is true - Don't display log message if running without hooks
- Add Support to Redis 4.0
- Drop complex Redis identifier logic in favor of simple inspect
- When a child process is killed, report the signal it was terminated with
- Report a job that pruned worker was processing
- Allow to configure statistic data store
- Fix issue where removing a failure from Resque web didn't work when using
RedisMultiQueue
backend.
- Fix issue where initializing a data store would attempt to hit Redis, even when Resque.inline = true
- Require "redis/distributed" in worker.rb to allow proper rescuing
- Fallback to server time if Redis time won't work (restores Redis 2.4 support)
- Show actual jobs names in web view using ActiveJob (@martnst)
- Fix issue where calling Worker.find, Worker.all, or Worker.working from withing a running job would rewrite the PID file with the PID of the forked worker. This causes a change to the Worker#new API that may affect plugin implementations. See Worker#new and Worker#prepare for details. (@jeremywadsack)
- Workers queried out now have the correct hostname (@crazymykl)
- Fix race condition on worker startup (@stevedomin)
- No longer triggers verbose logging if env variables are not set (@ldnunes)
- resque/failed/requeue/all when using Redis::Failure::Multiple no longer raises an exception (@ale7714)
- Improve forking to avoid having a child process escape its code (@dylanahsmith)
- Workers now use server time rather than their own time to maintain heartbeats (@fw42)
- Run eager load hooks for Rails applications versioned 4.x and up (@abhi-patel)
- Fix bug when encountering an error while pruning workers (Joakim Kolsjö and Tomas Skogberg)
- Children write to PIDFILE immediately after forking, fixing issues when reconnecting to Redis is slow (@fimmtiu)
- Update jQuery from 1.3.2 to 1.12.4 (@chrisccerami)
- No longer user Thread.kill to stop heartbeat (@Sinjo)
- Resque Web UI now prompts for confirmation on clearing failed jobs (Markus Olsen)
- Adds process status to DirtyExit exception when job is killed via signal (@MishaConway)
This changelog is a bit incomplete. We will be much stricter about the changelog for the next release.
- rake: when BACKGROUND, ensure worker.reconnect after daemonizing (@yaauie)
- worker: when searching workers, Worker#pid properly reflects pid of the found worker instead of the current pid. (@yaauie)
- Add support for RESQUE_PROCLINE_PREFIX environment variable to prefix procline strings with a static identifier. (@rbroemeling)
- Resque::Worker logs errors at the correct logging level (@chrisccerami)
- Respect TERM_CHILD setting when not forking (@ggilder)
- implementation of backend connection with a hash (Andrea Rossi)
- require yaml for show_args support (@yaauie)
- use redis-namespace 1.3 (Andrea Rossi)
- fix DOCS link in README (@cade)
- Fix worker prune test to actually run its assertion & cover reality. (@yaauie)
- Eliminate infinite recursion when Resque::Helpers mixed into Resque (@yaml)
- use ruby, avoid shelling out. google++ (@hone)
- Failed Assertions Don't Fail Tests 😡 (@yaauie)
- Actually require Forwardable from the standard library.
- Updates fork method so resque-multi-job-forks monkey patching works again. See discussion at https://github.com/defunkt/resque/pull/895 for more context (@jonhyman)
- Use Redis.pipelined to group batches of redis commands. resque#902 (@jonhyman)
- Fixed uninitialize constant for the module/class that contains the perform method causing job failures to no be reported, #792 (@sideshowcoder)
- Fix Resque::Failure::Base.all to have the correct signature. (@rentalutions)
- Don't close stdio pipes when daemonizing so as to not hide errors. #967 (@sideshowcoder)
- Fix for worker_pids on Windows. #980 (@kzgs)
- Only prune workers for queues the current worker knows about. #1000 (!) (@dsabanin)
- Handle duplicate TERM signals. #988 (@softwaregravy)
- Fix issue with exiting workers and unintentionally deregistering the parent when the forked child exits. #1017 (@magec)
- Fix encoding errors with local date formatting. #1065 (@katafrakt)
- Fix CI for 1.8.7 and 1.9.2 modes due to dependencies. #1090 (@adelcambre)
- Allow using globs for queue names to listen on, allowing things like
listening on
staging_*
. #1085 (@adelcambre)
- Adds a default value for
per_page
on resque-server for plugins which add tabs (@jonhyman) - Fix bad logic on the failed queue adapter
- Added missing
require 'time'
which was causing occasional errors which would crash workers.
- Web UI: Fix regression that caused the failure tab to break when using certain failure backends (@kjg)
- Web UI: Add page list to queues (@ql)
- Web UI: Fix regression that caused the failure tab to break when clicking on "clear all failures" under certain failure backends, #859 (@jonhyman)
- Fix regression for Resque hooks where Resque would error out if you assigned multiple hooks using an array, #859 (@jonhyman)
- Adds ENV["RUN_AT_EXIT_HOOKS"] which when set to 1 causes any defined
at_exit
hooks to be run on the child when the forked process exits, #862 (@jonhyman) - Bump up redis-namespace to 1.2.
- Remove multi_json, the JSON gem does the right thing everywhere now.
- Documentation fixes with demo instructions.
- Fixed encoding for worker PIDs on Windows (@kzgs)
- Cache value of PID in an ivar. This way, if you try to look up worker PIDs from some other process (such as the console), they will be correct.
- Add a mutex-free logger. Ruby 2.0 does not allow you to use a mutex from
a signal handler, which can potentially cause deadlock. Now we're using
mono_logger
, which has no locks.
- JRuby and Rubinius are 'allow failure' on CI. This is largely due to Travis weridness and flaky tests.
- Fix link from "queues" view to "failed" view when there's only one failed queue (trliner)
- Making all the failure backends have the same method signature for duck typing purposes (jonhyman)
- Fix log formatters not appending a new line (flavorpill)
- redirect unauthorized resque-web polling requests to root url (trliner)
- Various resque-web fixes (@tarcieri)
- Optional RedisMultiQueue failure backend, can be enabled with FAILURE_BACKEND=redis_multi_queue env var (@tarcieri)
- resque:failures:sort rake task will migrate an existing "failed" queue into separate failure queues per job queue, allowing an easy migration to the RedisMultiQueue failure backend (@tarcieri)
- Disable forking completely with FORK_PER_JOB=false env var (@tarcieri)
- Report a failure when processes are killed with signals (@dylanahsmith)
- Enable registering of multiple Resque hooks (@panthomakos, @jonhyman)
- don't run
before_fork
hook if Resque can't fork (@kjwierenga, @tarcieri, #672, #697) - don't run
after_fork
hook if Resque can't fork (@kjwierenga, @tarcieri, #672, #697) - retry connecting to redis up to 3 times (@trevorturk, #693)
- pass exceptions raised by the worker into the Failure backend (@trevorturk, #693)
- unregister signal handlers in child process when ENV["TERM_CHILD"] is set (@dylanasmith, #621)
- new signal handling for TERM. See http://hone.heroku.com/resque/2012/08/21/resque-signals.html. (@wuputah, @yaaule, #638)
- supports calling perform hooks when using Resque.inline (@jonhyman, #506)
- Add a flag to make sure failure hooks are only ran once (jakemack, #546)
- Support updated MultiJSON API (@twinturbo)
- Fix worker logging in monit example config (@twinturbo)
- loosen dependency of redis-namespace to 1.x, support for redis-rb 3.0.x
- change '%' to '$' in the 'stop program' command for monit
- UTF8 sanitize exception messages when there's a failure (@brianmario, #507)
- don't share a redis connection between parent and child (@jsanders, #588)
- Fixed demos for ruby 1.9 (@BMorearty, #445)
- Fixed
#requeue
tests (@hone, #500) - Web UI: optional trailing slashes of URLs (@elisehuard, #449)
- Allow * to appear anywhere in queue list (@tapajos, #405, #407)
- Wait for child with specific PID (@jacobkg)
- #decode raise takes a string when re-raising as a different exception class (Trevor Hart)
- Use Sinatra's
pubilc_folder
if it exists (@defunkt, #420, #421) - Assign the job's worker before calling
before_fork
(@quirkey) - Fix Resque::Helpers#constantize to work correctly on 1.9.2 (@rtlong)
- Added before & after hooks for dequeue (@humancopy, #398)
- daemonize support using
ENV["BACKGROUND"]
(@chrisleishman) - requeue and remove failed jobs by queue name (@evanwhalen)
-r
flag for resque-web for redis connection (@gjastrab)- Added
Resque.enqueue_to
: allows you to specif the queue and still run hooks (@dan-g) - Web UI: Set the default encoding to UTF-8 (@elubow)
- fix finding worker pids on JRuby (John Andrews + Andrew Grieser)
- Added distributed redis support (@stipple)
- Added better failure hooks (@raykrueger)
- Added before & after dequeue hooks (@humancopy)
- Added Airbrake (formerly Hoptoad) support.
- Web UI: Added retry all button to failed jobs page
- Web UI: Show focus outline
- Bugfix: Use Rails 3 eager loading for resque:preload
- Added support for Travis CI
- Bugfix: preload only happens in production Rails environment
- Bugfix: preload task depends on setup
- Bugfix: Fix preloading on Rails 3.x.
- Fix RAILS_ROOT deprecation warning
- Bugfix: Use RAILS_ROOT in preload task
- Added before_enqueue hook.
- Resque workers now preload files under app/ in Rails
- Switch to MultiJSON
- Bugfix: Finding worker pids on Solaris
- Web UI: Fix NaN days ago for worker screens
- Web UI: Add Cache-Control header to prevent proxy caching
- Web UI: Update Resque.redis_id so it can be used in a distributed ring.
- Reverted
exit
change. Back toexit!
.
- Workers exit with
exit
instead ofexit!
. This means you can now useat_exit
hooks inside workers. - More monit typo fixes.
- Fixed bug in Hoptoad backend.
- Web UI: Wrap preformatted arguments.
- Bugfix: Resque::Failure::Hoptoad.configure works again
- Bugfix: Loading rake tasks
- Optional Hoptoad backend extracted into hoptoad_notifier. Install the gem to use it.
- Added
Worker#paused?
method - Bugfix: Properly reseed random number generator after forking.
- Bugfix: Resque.redis=()
- Bugfix: Monit example stdout/stderr redirection
- Bugfix: Removing single failure now works with multiple failure backends
- Web: 'Remove Queue' now requires confirmation
- Web: Favicon!
- Web Bugfix: Dates display in Safari
- Web Bugfix: Dates display timezone
- Web Bugfix: Race condition querying working workers
- Web Bugfix: Fix polling /workers/all in resque-web
- Fallback to Redis.connect. Makes ENV variables and whatnot work.
- Fixed Sinatra 1.2 compatibility
- Sleep interval can now be a float
- Added Resque.inline to allow in-process performing of jobs (for testing)
- Fixed tests for Ruby 1.9.2
- Added Resque.validate(klass) to validate a Job
- Decode errors are no longer ignored to help debugging
- Web: Sinatra 1.2 compatibility
- Fixed after_enqueue hook to actually run in
Resque.enqueue
- Fixed very_verbose timestamps to use 24 hour time (AM/PM wasn't included)
- Fixed monit example
- Fixed Worker#pid
- Depend on redis-namespace >= 0.10
- README tweaks
- Use thread_safe option when setting redis url
- Bugfix: worker pruning
- Added pidfile writing from
rake resque:work
- Added Worker#pid method
- Added configurable location for
rake install
- Bugfix: Errors in failure backend are rescue'd
- Bugfix: Non-working workers no longer counted in "working" count
- Bugfix: Don't think resque-web is a worker
- Web UI: Group /workers page by hostnames
- Support redis:// string format in
Resque.redis=
- Using new cross-platform JSON gem.
- Added
after_enqueue
plugin hook. - Added
shutdown?
method which can be overridden. - Added support for the "leftright" gem when running tests.
- Grammarfix: In the README
- Bugfix: before_fork should get passed the job
- Depend on redis-namespace 0.8.0
- Depend on json_pure instead of json (for JRuby compat)
- Bugfix: rails_env display in stats view
- Bugfix: Worker.all should never return nil
- monit example: Fixed Syntax Error and adding environment to the rake task
- redis rake task: Fixed typo in copy command
- Improved memory usage in Job.destroy
- redis-namespace 0.7.0 now required
- Bugfix: Reverted $0 changes
- Web Bugfix: Payload-less failures in the web ui work
- Bugfix: Rakefile logging works the same as all the other logging
- Web Bugfix: Display the configured namespace on the stats page
- Revert Bugfix: Make ps -o more cross platform friendly
- Bugfix: Multiple failure backend gets exception information when created
- Bugfix: Resque#queues always returns an array
- Bugfix: Worker.all returning nil fix
- Bugfix: Make ps -o more cross platform friendly
- Less strict JSON dependency
- Included HISTORY.md in gem
- Redis 2 support
- Depend on redis-namespace 0.5.0
- Added Resque::VERSION constant (alias of Resque::Version)
- Bugfix: Specify JSON dependency
- Bugfix: Hoptoad plugin now works on 1.9
- Bugfix: Be more liberal in which Redis clients we accept.
- Try to resolve redis-namespace dependency issue
- Depend on redis-rb ~> 1.0.7
- Bugfix: Include "tasks/" dir in RubyGem
- Bugfix: Multiple failure backend did not support requeue-ing failed jobs
- Bugfix: Fix /failed when error has no backtrace
- Bugfix: Add
Redis::DistRedis
as a valid client
- Jobs that never complete due to killed worker are now failed.
- Worker "working" state is now maintained by the parent, not the child.
- Stopped using deprecated redis.rb methods
Worker.working
race condition fixedWorker#process
has been deprecated.- Monit example fixed
- Redis::Client and Redis::Namespace can be passed to
Resque.redis=
- Bugfix: Make job hook execution order consistent
- Bugfix: stdout buffering in child process
- Job hooks API. See docs/HOOKS.md.
- web: Hovering over dates shows a timestamp
- web: AJAXify retry action for failed jobs
- web bugfix: Fix pagination bug
- Bugfix: Workers may not be clearing their state correctly on shutdown
- Added example monit config.
- Exception class is now recorded when an error is raised in a worker.
- web: Unit tests
- web: Show namespace in header and footer
- web: Remove a queue
- web: Retry failed jobs
- Added
before_first_fork
,before_fork
, andafter_fork
hooks. - Hoptoad: Added server_environment config setting
- Hoptoad bugfix: Don't depend on RAILS_ROOT
- 1.8.6 compat fixes
- Bugfix: JSON check was crazy.
Job.destroy
andResque.dequeue
return the # of destroyed jobs.- Hoptoad notifier improvements
- Specify the namespace with
resque-web
by passing-N namespace
- Bugfix: Don't crash when trying to parse invalid JSON.
- Bugfix: Non-standard namespace support
- Web: Red backgound for queue "failed" only shown if there are failed jobs.
- Web bugfix: Tabs highlight properly now
- Web bugfix: ZSET partial support in stats
- Web bugfix: Deleting failed jobs works again
- Web bugfix: Sets (or zsets, lists, etc) now paginate.
- Version now included in procline, e.g.
resque-1.5.0: Message
- Web bugfix: Ignore idle works in the "working" page
- Added
Resque::Job.destroy(queue, klass, *args)
- Added
Resque.dequeue(klass, *args)
- Fallback when unable to bind QUIT and USR1 for Windows and JRuby.
- Fallback when no
Kernel.fork
is provided (for IronRuby). - Web: Rounded corners in Firefox
- Cut down system calls in
Worker#prune_dead_workers
- Enable switching DB in a Redis server from config
- Support USR2 and CONT to stop and start job processing.
- Web: Add example failing job
- Bugfix:
Worker#unregister_worker
shouldn't calldone_working
- Bugfix: Example god config now restarts Resque properly.
- Multiple failure backends now permitted.
- Hoptoad failure backend updated to new API
- Vegas bugfix: Don't error without a config
- Use Vegas for resque-web
- Web Bugfix: Show proper date/time value for failed_at on Failures
- Web Bugfix: Make the / route more flexible
- Add Resque::Server.tabs array (so plugins can add their own tabs)
- Start using Semantic Versioning
- Web Bugfix: fix key links on stat page
- Bugfix: Fixed
rand
seeding in child processes. - Bugfix: Better JSON encoding/decoding without Yajl.
- Bugfix: Avoid
ps
flag error on Linux - Add
PREFIX
observance torake
install tasks.
- Bugfix: Job equality was not properly implemented.
- Added
rake resque:workers
task for starting multiple workers. - 1.9.x compatibility
- Bugfix: Yajl decoder doesn't care about valid UTF-8
- config.ru loads RESQUECONFIG if the ENV variable is set.
resque-web
now sets RESQUECONFIG- Job objects know if they are equal.
- Jobs can be re-queued using
Job#recreate
- If USR1 is sent and no child is found, shutdown.
- Raise when a job class does not respond to
perform
. - Added
Resque.remove_queue
for deleting a queue
- Bugfix: Broken ERB tag in failure UI
- Bugfix: Save the worker's ID, not the worker itself, in the failure module
- Redesigned the sinatra web interface
- Added option to clear failed jobs
- First release.