From 38afa8c3f8fafcb5fe5d675ea5a2fa2dfd1b770c Mon Sep 17 00:00:00 2001 From: "Hongli Lai (Phusion)" Date: Wed, 1 Jan 2014 20:49:12 +0100 Subject: [PATCH] Fixed some problems with spawning applications that print messages without newline during startup. Fixes issue #1039. --- NEWS | 2 ++ helper-scripts/classic-rails-loader.rb | 2 +- helper-scripts/classic-rails-preloader.rb | 2 +- helper-scripts/rack-loader.rb | 2 +- helper-scripts/rack-preloader.rb | 2 +- lib/phusion_passenger/loader_shared_helpers.rb | 9 +++++++++ 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 6f75b6a535..b45688fbfe 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,8 @@ Release 4.0.31 all clients have disconnected. Fixes issue #884. * Fixed compilation problems on FreeBSD. * Fixed some C++ strict aliasing problems. + * Fixed some problems with spawning applications that print messages without + newline during startup. Fixes issue #1039. * When Phusion Passenger is installed through the Debian package, passenger-install-apache2-module now checks whether the Apache module package (libapache2-mod-passenger) is properly installed, diff --git a/helper-scripts/classic-rails-loader.rb b/helper-scripts/classic-rails-loader.rb index e2f28dfa31..322f83becf 100644 --- a/helper-scripts/classic-rails-loader.rb +++ b/helper-scripts/classic-rails-loader.rb @@ -149,7 +149,7 @@ def self.rails_will_preload_app_code? handshake_and_read_startup_request init_passenger handler = load_app - puts "!> Ready" + LoaderSharedHelpers.advertise_readiness LoaderSharedHelpers.advertise_sockets(STDOUT, handler) puts "!> " handler.main_loop diff --git a/helper-scripts/classic-rails-preloader.rb b/helper-scripts/classic-rails-preloader.rb index 1a6ce30a97..6f14c6e029 100644 --- a/helper-scripts/classic-rails-preloader.rb +++ b/helper-scripts/classic-rails-preloader.rb @@ -163,7 +163,7 @@ def self.negotiate_spawn_command exit exit_code_for_exception(e) end - puts "!> Ready" + LoaderSharedHelpers.advertise_readiness LoaderSharedHelpers.advertise_sockets(STDOUT, handler) puts "!> " return handler diff --git a/helper-scripts/rack-loader.rb b/helper-scripts/rack-loader.rb index 3de9a6f640..52fc0026a1 100644 --- a/helper-scripts/rack-loader.rb +++ b/helper-scripts/rack-loader.rb @@ -98,7 +98,7 @@ def self.load_app load_app LoaderSharedHelpers.before_handling_requests(false, options) handler = RequestHandler.new(STDIN, options.merge("app" => app)) - puts "!> Ready" + LoaderSharedHelpers.advertise_readiness LoaderSharedHelpers.advertise_sockets(STDOUT, handler) puts "!> " handler.main_loop diff --git a/helper-scripts/rack-preloader.rb b/helper-scripts/rack-preloader.rb index 81ae256191..9337b05e1a 100644 --- a/helper-scripts/rack-preloader.rb +++ b/helper-scripts/rack-preloader.rb @@ -137,7 +137,7 @@ def self.negotiate_spawn_command exit exit_code_for_exception(e) end - puts "!> Ready" + LoaderSharedHelpers.advertise_readiness LoaderSharedHelpers.advertise_sockets(STDOUT, handler) puts "!> " return handler diff --git a/lib/phusion_passenger/loader_shared_helpers.rb b/lib/phusion_passenger/loader_shared_helpers.rb index 48b3bbd196..0b857ed2d9 100644 --- a/lib/phusion_passenger/loader_shared_helpers.rb +++ b/lib/phusion_passenger/loader_shared_helpers.rb @@ -42,6 +42,8 @@ def init # To be called whenever the (pre)loader is about to abort with an error. def about_to_abort(exception = nil) dump_all_information + # https://code.google.com/p/phusion-passenger/issues/detail?id=1039 + puts end def to_boolean(value) @@ -250,6 +252,13 @@ def create_socket_address(protocol, address) end end + def advertise_readiness + # https://code.google.com/p/phusion-passenger/issues/detail?id=1039 + puts + + puts "!> Ready" + end + def advertise_sockets(output, request_handler) request_handler.server_sockets.each_pair do |name, options| concurrency = PhusionPassenger.advertised_concurrency_level || options[:concurrency]