- Honor an
X-Request-Start
header with thet=<microseconds>
format, to allow usingwait_timeout
functionality with Apache (#210) - Improve message when Terminate on Timeout is used on a platform that does not support it (eg. Windows or JVM) (#192)
- Fix a thread safety issue for forks that are not on the main thread (#212)
- Add compatibility with frozen_string_literal: true (#196)
- Fix if Rails is defined but Rails::VERSION is not defined (#191)
- Fix
NoMethodError: undefined method 'logger' for Rails:Module
when Rails is defined as a Module, but is not a full Rails app (#180)
- RACK_TIMEOUT_TERM_ON_TIMEOUT can be set to zero to disable (#161)
- Update the gemspec's homepage to the current repo URL(#183)
- Allow sending SIGTERM to workers on timeout (#157)
- Rails 6 support (#147)
- Fixes setting ENV vars to false or 0 would not disable a timeout (#133)
- Fix 0600 permissions in gem pushed to rubygems
Breaking Changes
- Remove Rollbar module (#124)
- Remove legacy class setters (#125)
Other
- Add support to configure via environment variables (#105)
- Adds support for ActionDispatch::RequestId generated request ids (#115)
- Changes uuid format to proper uuid (#115)
- Ruby 2.0 compatible
- Rails 5 support
- Remove deprecation warning on timeout setter for Rails apps
- Using monotonic time instead of Time.now where available (/ht concurrent-ruby)
- Settings are now passable to the middleware initializer instead of class-level
- Rollbar module may take a custom fingerprint block
- Rollbar module considered final
- Fixed an issue where some heartbeats would live on forever (#103, /ht @0x0badc0de)
- Fixes calling timeout with a value of 0 (issue #90)
- Rollbar module improvements
- use a single scheduler thread to manage timeouts, instead of one timeout thread per request
- instead of inserting middleware at position 0 for rails, insert before Rack::Runtime (which is right after Rack::Lock and the static file stuff)
- reshuffle error types: RequestExpiryError is again a RuntimeError, and timeouts raise a RequestTimeoutException, an Exception, and not descending from Rack::Timeout::Error (see README for more)
- don't insert middleware for rails in test environment
- add convenience module Rack::Timeout::Logger (see README for more)
- StageChangeLoggingObserver renamed to StateChangeLoggingObserver, works slightly differently too
- file layout reorganization (see 6e82c276 for details)
- CHANGELOG file is now in the gem (@dbackeus)
- add optional and experimental support for grouping errors by url under rollbar. see "rack/timeout/rollbar" for usage
- Previous fix was borked.
- Ignore Rack::NullLogger when picking a logger
- Fix raised error messages
- Added CHANGELOG
- Rack::Timeout::Error now inherits from Exception instead of StandardError, with the hope users won't rescue from it accidentally
- improve RequestTimeoutError error string so @watsonian is happy
- README updates
- fix that setting properties to false resulted in an error
- Rewrote README
- Renamed
timeout
setting toservice_timeout
;timeout=
still works for backwards compatibility –MAX_REQUEST_AGE
is gone, thewait_timeout
setting more or less replaces it - Renamed
overtime
setting towait_overtime
- overtime setting should actually work (It had never made it to beta3)
- In the request info struct, renamed
age
towait
,duration
toservice
- Rack::Timeout::StageChangeLogger is gone, replaced by Rack::Timeout::StageChangeLoggingObserver, which is an observer class that composites with a logger, instead of inheriting from Logger. Anything logging related will likely be incompatible with previous beta release.
- Log level can no longer be set with env vars, has to be set in the logger being used. (Which can now be custom / user-provided.)
- Dropped ruby 1.8.x support
- Dropped rails 2 support
- Added rails 4 support
- Added much logging – Added support for dropping requests that waited too long in the queue without ever handling them
- Other things I can't remember, see git logs :P