From e1d35fa5557f0bbd5a2e672314933da315bd60f2 Mon Sep 17 00:00:00 2001 From: Kevin Clark Date: Wed, 18 Jun 2008 01:18:41 +0000 Subject: [PATCH] rb: Wrap a semaphore around @serverTransport.close in NonblockingServer.shutdown git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@669020 13f79535-47bb-0310-9956-ffa450edef68 --- lib/rb/lib/thrift/server/nonblockingserver.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/rb/lib/thrift/server/nonblockingserver.rb b/lib/rb/lib/thrift/server/nonblockingserver.rb index 283d5f59..054c4d73 100644 --- a/lib/rb/lib/thrift/server/nonblockingserver.rb +++ b/lib/rb/lib/thrift/server/nonblockingserver.rb @@ -15,6 +15,7 @@ module Thrift @logger = logger end @shutdown_semaphore = Mutex.new + @transport_semaphore = Mutex.new end def serve @@ -33,7 +34,9 @@ module Thrift @logger.info "#{self} is shutting down, goodbye" end ensure - @serverTransport.close + @transport_semaphore.synchronize do + @serverTransport.close + end @io_manager.ensure_closed unless @io_manager.nil? end @@ -46,7 +49,9 @@ module Thrift # but we can't change the order of operations here, so lets thread shutdown_proc = lambda do @io_manager.shutdown(timeout) - @serverTransport.close # this will break the accept loop + @transport_semaphore.synchronize do + @serverTransport.close # this will break the accept loop + end end if block shutdown_proc.call -- 2.17.1