+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
require 'rack'
require 'faye/websocket'
require 'eventmachine'
if forked && EM.reactor_running?
EM.stop
end
- Thread.new {
- EM.run
- }
+ Thread.new do
+ begin
+ EM.run
+ ensure
+ ActiveRecord::Base.connection.close
+ end
+ end
die_gracefully_on_signal
end
else
# faciliates debugging
Thread.abort_on_exception = true
# just spawn a thread and start it up
- Thread.new {
- EM.run
- }
+ Thread.new do
+ begin
+ EM.run
+ ensure
+ ActiveRecord::Base.connection.close
+ end
+ end
end
# Create actual handler instance object from handler class.
def call env
request = Rack::Request.new(env)
if request.path_info == @endpoint and Faye::WebSocket.websocket?(env)
+ if @handler.overloaded?
+ return [503, {"Content-Type" => "text/plain"}, ["Too many connections, try again later."]]
+ end
+
ws = Faye::WebSocket.new(env, nil, :ping => 30)
# Notify handler about new connection