diff --git a/lib/protobuf/cli.rb b/lib/protobuf/cli.rb index ad0716c6..2eb72218 100644 --- a/lib/protobuf/cli.rb +++ b/lib/protobuf/cli.rb @@ -219,7 +219,6 @@ def shutdown_server logger.info { 'RPC Server shutting down...' } @runner.try(:stop) ::Protobuf::Rpc::ServiceDirectory.instance.stop - logger.info { 'Shutdown complete' } end # Start the runner and log the relevant options. @@ -233,6 +232,10 @@ def start_server ::ActiveSupport::Notifications.instrument("after_server_bind") end + + logger.info { 'Shutdown complete' } + + exit 0 end end end diff --git a/lib/protobuf/rpc/servers/zmq/broker.rb b/lib/protobuf/rpc/servers/zmq/broker.rb index 89333742..7f79e5be 100644 --- a/lib/protobuf/rpc/servers/zmq/broker.rb +++ b/lib/protobuf/rpc/servers/zmq/broker.rb @@ -29,7 +29,7 @@ def run rc = @poller.poll(500) # The server was shutdown and no requests are pending - break if rc == 0 && !running? + break if rc == 0 && !running? && @server.workers.empty? # Something went wrong break if rc == -1 @@ -42,7 +42,7 @@ def run end def running? - @server.running? || @server.workers.any? + @server.running? end private @@ -113,7 +113,7 @@ def inproc? end def local_queue_available? - local_queue.size < local_queue_max_size + local_queue.size < local_queue_max_size && running? end def local_queue_max_size