From 3e2f39cc85e1a8e6a6cd644f7a95da52d8f07cfe Mon Sep 17 00:00:00 2001 From: Seth Call Date: Tue, 29 Apr 2014 16:27:50 +0000 Subject: [PATCH] * VRFS-1653 - don't bother with cleanup in onerror, and make startup of EventMachine better (VRFS-1659) --- ruby/lib/jam_ruby/lib/em_helper.rb | 15 ++++++++++++--- websocket-gateway/lib/jam_websockets/router.rb | 7 ------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ruby/lib/jam_ruby/lib/em_helper.rb b/ruby/lib/jam_ruby/lib/em_helper.rb index 14d661c06..2d3c4a77c 100644 --- a/ruby/lib/jam_ruby/lib/em_helper.rb +++ b/ruby/lib/jam_ruby/lib/em_helper.rb @@ -36,8 +36,9 @@ module JamWebEventMachine end - def self.run_em(calling_thread = nil) + def self.run_em(calling_thread = nil, semaphore = nil, ran = {}) + semaphore.lock if semaphore EM.run do # this is global because we need to check elsewhere if we are currently connected to amqp before signalling success with some APIs, such as 'create session' $amqp_connection_manager = AmqpConnectionManager.new(true, 4, :host => APP_CONFIG.rabbitmq_host, :port => APP_CONFIG.rabbitmq_port) @@ -54,6 +55,8 @@ module JamWebEventMachine end end + ran[:ran] = true + semaphore.unlock if semaphore calling_thread.wakeup if calling_thread end end @@ -66,11 +69,17 @@ module JamWebEventMachine def self.run + ran = {} + semaphore = Mutex.new current = Thread.current Thread.new do - run_em(current) + run_em(current, semaphore, ran) end - Thread.stop + semaphore.synchronize { + unless ran[:ran] + semaphore.sleep(10) + end + } end def self.start diff --git a/websocket-gateway/lib/jam_websockets/router.rb b/websocket-gateway/lib/jam_websockets/router.rb index dc1c20f66..de56c7774 100644 --- a/websocket-gateway/lib/jam_websockets/router.rb +++ b/websocket-gateway/lib/jam_websockets/router.rb @@ -245,13 +245,6 @@ module JamWebsockets else @log.error "generic error: #{error} #{error.backtrace}" end - - unless error.to_s.include? "Close handshake un-acked" - cleanup_client(client) - else - @log.info "skipping cleanup because error is for dead connection: https://github.com/igrigorik/em-websocket/issues/122" - end - } client.onmessage { |msg|