diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2006-02-05 08:21:08 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2006-02-05 08:21:08 (GMT) |
commit | 55cd82fe0adc0a7ceb93eb1b6e9de6a25fd7adb9 (patch) | |
tree | 2570a8e862a3e9a7fe6c49f0728d5a390a417558 /Lib | |
parent | 0e6bc8c260f640ceee515e9873353778472e0a00 (diff) | |
download | cpython-55cd82fe0adc0a7ceb93eb1b6e9de6a25fd7adb9.zip cpython-55cd82fe0adc0a7ceb93eb1b6e9de6a25fd7adb9.tar.gz cpython-55cd82fe0adc0a7ceb93eb1b6e9de6a25fd7adb9.tar.bz2 |
Get test_logging to not hang when running under regrtest.py -R ::
Not sure why/how _handlers/_handlerList is out of sync. This could
indicate a deeper problem.
In test_logging, the only absolutely necessary change to get working
was tcpserver.abort = 1. But we don't want to wait infinitely
to join the threads, so give a 2.0 second timeout.
There doesn't appear to be a need for a local abort variable
in serve_until_stopped, so just use the instance member.
Note the problem is only on HEAD, not in 2.4.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/logging/__init__.py | 3 | ||||
-rw-r--r-- | Lib/test/test_logging.py | 8 |
2 files changed, 6 insertions, 5 deletions
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 5a0b0f5..9fa8797 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -671,7 +671,8 @@ class Handler(Filterer): #get the module data lock, as we're updating a shared structure. _acquireLock() try: #unlikely to raise an exception, but you never know... - del _handlers[self] + if _handlers.has_key(self): + del _handlers[self] _handlerList.remove(self) finally: _releaseLock() diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 799f059..bcebc83 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -99,14 +99,12 @@ class LogRecordSocketReceiver(ThreadingTCPServer): self.timeout = 1 def serve_until_stopped(self): - abort = 0 - while not abort: + while not self.abort: rd, wr, ex = select.select([self.socket.fileno()], [], [], self.timeout) if rd: self.handle_request() - abort = self.abort #notify the main thread that we're about to exit socketDataProcessed.set() # close the listen socket @@ -620,8 +618,10 @@ def test_main_inner(): finally: #wait for TCP receiver to terminate socketDataProcessed.wait() + # ensure the server dies + tcpserver.abort = 1 for thread in threads: - thread.join() + thread.join(2.0) banner("logrecv output", "begin") sys.stdout.write(sockOut.getvalue()) sockOut.close() |