- Implement
rack.response_finished
(#97). - Don't break the
rack.after_reply
callback chain if one callback raises (#97).
- Fix Ruby 3.4-dev compatibility.
- Drop invalid response headers.
- Enforce
spawn_timeout
for molds too. - Gracefully shutdown the server if the mold appear to be corrupted (#79).
- Add more information in proctitle when forking a new sibbling.
- Add a
before_fork
callback called before forking new molds and new workers.
- Include requests count in workers proctitle.
- Implement
spawn_timeout
to protect against bugs causing workers to get stuck before they reach ready state.
- Add an
after_monitor_ready
callback, called in the monitor process at end of boot. - Implement
Pitchfork.prevent_fork
for use in background threads that synchronize native locks with the GVL released.
- Set nicer
proctile
to better see the state of the process tree at a glance. - Pass the last request env to
after_request_complete
callback. - Fix the slow rollout of workers on a new generation.
- Expose
Pitchfork::Info.fork_safe?
andPitchfork::Info.no_longer_fork_safe!
.
- Expose
Pitchfork::Info.workers_count
and.live_workers_count
to be consumed by application health checks. - Implement
before_worker_exit
callback. - Make each mold and worker a process group leader.
- Get rid of
Pitchfork::PrereadInput
. - Add
Pitchfork.shutting_down?
to allow health check endpoints to fail sooner on graceful shutdowns. - Treat
TERM
as graceful shutdown rather than quick shutdown. - Implement
after_worker_hard_timeout
callback.
- Added a soft timeout in addition to the historical Unicorn hard timeout.
On soft timeout, the
after_worker_timeout
callback is invoked. - Implement
after_request_complete
callback.
- Avoid a Rack 3 deprecation warning.
- Fix handling on non-ASCII cookies.
- Log unknown process being reaped at INFO level.
- Preserve the current thread when reforking.
- Renamed
after_promotion
inafter_mold_fork
. - Renamed
after_fork
inafter_worker_fork
. - Backoff 10s after every mold spawning attempt.
- Spawn mold from workers instead of promoting workers (#42).
- Remove default middlewares.
- Refork indefinitely when
refork_after
is set, unless the last element isfalse
. - Remove
mold_selector
. The promotion logic has been moved inside workers (#38). - Add the
after_promotion
callback. - Removed the
before_fork
callback. - Fork workers and molds with a clean stack to allow more generations. (#30)
- Improve Ruby 3.2 and Rack 3 compatibility.
- Fix
extconf.rb
to move the extension in the right place on gem install. (#18)
Initial release