views:

410

answers:

2

Will it finish serving all current requests before it restarts?

+1  A: 

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.

tal
"By creating or modifying the file tmp/restart.txt in the Rails application’s root folder. Phusion Passenger will automatically restart the application during the next request." http://modrails.com/documentation.html
Jonathan Julian
I read that quote while reading the docs to answer this question, do you interpret this as implying that it will restart gracefully? Ie finish all outstanding requests then do the next one with the new version?
Greg
Yes, that's the way I interpreted it.
Jonathan Julian
A: 

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.

hurikhan77
By graceful i just mean every request in progress is completed without dropping any.
Greg
Just amended my answer - it won't drop an app instance, neither during a request nor for the immediate next request.
hurikhan77