Will it finish serving all current requests before it restarts?
I'm under the impression that each passenger app instance dies AFTER processing a request instead of restarting BEFORE the next request when restart.txt is touched. So there's a latency of one request in each passenger worker. As the process quits and the app spawner just spawns a new instance, I would not call this "graceful".
This means that the next request to a single instance of your application will be answered by that version of the instance which then quits (after doing its work). Current running requests won't be killed.
Short answer : yes !
In fact, it will allow current request to finish, and serve new request with new version. I am trying to find reference to this, but can't find any for the moment.
I'm under the impression that each passenger app instance dies AFTER processing a request instead of restarting BEFORE the next request when restart.txt is touched. So there's a latency of one request in each passenger worker. As the process quits and the app spawner just spawns a new instance, I would not call this "graceful".
This means that the next request to a single instance of your application will be answered by that version of the instance which then quits (after doing its work). Current running requests won't be killed.
From the documentation:
"If you use passenger-config restart-app or restart.txt or restart an application, then Passenger never drops any requests during the restart."
also:
"Before shutting down or restarting an application process, Passenger performs two > operations:
- It waits until existing requests routed to that process are finished. This way, existing requests will be finished gracefully.
- It aborts WebSocket connections. This is because WebSocket connections can stay open for an arbitrary amount of time and will block the shutdown/restart."
© 2022 - 2024 — McMap. All rights reserved.