Change from a threading.Condition object to a threading.Event object for
signalling when the TCP server is done. Should hopefully solve hanging
issues for Solaris 8 & 9. Solves the apparent hanging issue with OS X.
Closes patch #729988 .
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 93fb4a2..6099562 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -88,7 +88,8 @@
logger = logging.getLogger(logname)
logger.handle(record)
-socketDataProcessed = threading.Condition()
+# The server sets socketDataProcessed when it's done.
+socketDataProcessed = threading.Event()
class LogRecordSocketReceiver(ThreadingTCPServer):
"""
@@ -115,9 +116,7 @@
self.handle_request()
abort = self.abort
#notify the main thread that we're about to exit
- socketDataProcessed.acquire()
- socketDataProcessed.notify()
- socketDataProcessed.release()
+ socketDataProcessed.set()
def process_request(self, request, client_address):
#import threading
@@ -467,9 +466,7 @@
finally:
#wait for TCP receiver to terminate
- socketDataProcessed.acquire()
socketDataProcessed.wait()
- socketDataProcessed.release()
for thread in threads:
thread.join()
banner("logrecv output", "begin")