You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by kc...@apache.org on 2008/06/18 03:18:42 UTC
svn commit: r669020 -
/incubator/thrift/trunk/lib/rb/lib/thrift/server/nonblockingserver.rb
Author: kclark
Date: Tue Jun 17 18:18:41 2008
New Revision: 669020
URL: http://svn.apache.org/viewvc?rev=669020&view=rev
Log:
rb: Wrap a semaphore around @serverTransport.close in NonblockingServer.shutdown
Modified:
incubator/thrift/trunk/lib/rb/lib/thrift/server/nonblockingserver.rb
Modified: incubator/thrift/trunk/lib/rb/lib/thrift/server/nonblockingserver.rb
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/rb/lib/thrift/server/nonblockingserver.rb?rev=669020&r1=669019&r2=669020&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/rb/lib/thrift/server/nonblockingserver.rb (original)
+++ incubator/thrift/trunk/lib/rb/lib/thrift/server/nonblockingserver.rb Tue Jun 17 18:18:41 2008
@@ -15,6 +15,7 @@
@logger = logger
end
@shutdown_semaphore = Mutex.new
+ @transport_semaphore = Mutex.new
end
def serve
@@ -33,7 +34,9 @@
@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 @@
# 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