From 7a08e2c84f2137774269a89e4ab8cc4321762284 Mon Sep 17 00:00:00 2001 From: Kyle Banker Date: Tue, 29 Dec 2009 13:27:12 -0500 Subject: [PATCH] minor: pool test working for windows on 1.8.6 --- lib/mongo/connection.rb | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/mongo/connection.rb b/lib/mongo/connection.rb index 0f4190d..1d47714 100644 --- a/lib/mongo/connection.rb +++ b/lib/mongo/connection.rb @@ -109,6 +109,7 @@ module Mongo # Mutex for synchronizing pool access @connection_mutex = Mutex.new + @safe_mutex = Mutex.new # Condition variable for signal and wait @queue = ConditionVariable.new @@ -218,8 +219,11 @@ module Mongo @logger.debug(" MONGODB #{log_message || message}") if @logger sock = checkout packed_message = message_with_headers.append!(message_with_check).to_s - send_message_on_socket(packed_message, sock) - docs, num_received, cursor_id = receive(sock) + docs = num_received = cursor_id = '' + @safe_mutex.synchronize do + send_message_on_socket(packed_message, sock) + docs, num_received, cursor_id = receive(sock) + end checkin(sock) if num_received == 1 && error = docs[0]['err'] raise Mongo::OperationFailure, error @@ -237,8 +241,11 @@ module Mongo @logger.debug(" MONGODB #{log_message || message}") if @logger sock = socket || checkout - send_message_on_socket(packed_message, sock) - result = receive(sock) + result = '' + @safe_mutex.synchronize do + send_message_on_socket(packed_message, sock) + result = receive(sock) + end checkin(sock) result end