Passenger 5.0.23: bug fixes, Node.js WebSocket improvements

Version 5.0.23 of the Phusion Passenger application server for Ruby, Python, Node.js and Meteor has been released. It contains a few improvements and fixes for issues detected in heavy load conditions.

If you hadn't already, be sure to check out the many major improvements that the 5.x series of Passenger introduces. And please be aware that you can enjoy enterprise features and sponsor the open source development directly by buying Phusion Passenger Enterprise.

Graceful WebSocket shutdown for Node.js

In Passenger 5.0.22 we introduced the abort_websockets_on_process_shutdown option to allow applications to take care of their WebSocket connections on shutdown rather than having Passenger kill the connections.

The option was less than ideal because it required applications to ensure that WebSockets have bounded life time. Passenger did not send any notification to the application to begin graceful shutdown of WebSockets.

In 5.0.23 we send a SIGINT to Node.js applications that have set abort_websockets_on_process_shutdown to false, and then wait until the application has closed the sockets. Applications written in other languages still have to ensure that WebSockets have bounded life time. Closes GH-1702.

Note: while this Passenger option allows for nicer termination, it does not protect your application from unexpected WebSocket termination in general (connections can break at any time). It's up to your application and protocol to implement robust ways of handling this.

Bug fixes

  • Fixes the request acceptor error handling timeout. When an error occurs while Passenger is accepting a request (for example, when Passenger has run out of file descriptors), Passenger is supposed to wait for 3 seconds before trying again. Because of a typo, Passenger actually waited 3 milliseconds.
  • [Enterprise] Fixed a regression in the Passenger Standalone Nginx config template that breaks the Mass Deployment feature.
  • With friendly error pages off Passenger would still show a trace (referencing only Passenger code) for unusual spawn errors. This has been changed to a generic error message. Closes GH-1704.

Other improvements

  • The mime type for serving static XHTML files is updated. We no longer use the mobile profile, so it is recognized by desktop browsers. Closes GH-1695.
  • Improves error messages about Ruby native support to indicate the optional nature. Passenger is able to operate even without the native support extension, but that wasn't clear enough to some users, causing them to think of the old messages as errors.

Installing 5.0.23

Please see the installation guide.

Upgrading to 5.0.23

We recommend staying up to date with the latest version. Users on version 5.0.17 or below, or users affected by the security issue in 5.0.21 and below are strongly advised to upgrade.

See also the upgrade notes below!

OS X
OS X
Debian
Debian
Ubuntu
Ubuntu
Heroku
Heroku
Red Hat
Red Hat
CentOS
CentOS
Ruby gem
Ruby gem
Tarball
Tarball
Ruby gem
Docker

If you are upgrading from 4.x, please read the 5.0 upgrade notes to learn about potential upgrade caveats.

Special notes about RPMs on CentOS

Update: we've tested the installation to work on CentOS 6 and 7 without any special settings. If you experience any problems, please try to install updates before installing Passenger:
yum clean all && yum update

Special notes about capistrano-passenger

If you are using Capistrano and [capistrano-passenger], then it may fail with this error:

SSHKit::Runner::ExecuteError: Exception while executing as user@99.99.99.99: undefined method `[]' for nil:NilClass

NoMethodError: undefined method `[]' for nil:NilClass

Tasks: TOP => passenger:restart

This is due to an incompatibility in capistrano-passenger with Passenger 5.0.22 and later. Please upgrade capistrano-passenger to 0.2.0 or later.

Final

Phusion Passenger's core is open source. Please fork or watch us on Github. :)

[img

Union Station is Phusion's brand new take on Passenger application monitoring and analytics. Union Station aims to help you easily find performance bottlenecks and errors in your application and to help you fix them. Sign up for a free trial today!

comments powered by Disqus