Thanks, I'll check out the Repoze.BFG IRC channel as well.
The problem from my previous email was indeed hung requests. However, the
Thread 140605868680960:
File "/usr/lib/python2.6/threading.py", line 504, in __bootstrap
self.__bootstrap_inner()
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "/usr/lib/python2.6/threading.py", line 484, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 878, in worker_thread_callback
runnable()
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 1052, in <lambda>
lambda: self.process_request_in_thread(request, client_address))
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 1068, in process_request_in_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.6/SocketServer.py", line 322, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.6/SocketServer.py", line 617, in __init__
self.handle()
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 442, in handle
BaseHTTPRequestHandler.handle(self)
File "/usr/lib/python2.6/BaseHTTPServer.py", line 329, in handle
self.handle_one_request()
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 437, in handle_one_request
self.wsgi_execute()
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 287, in wsgi_execute
self.wsgi_start_response)
File "/home/tsa/env/lib/python2.6/site-packages/repoze/zodbconn/connector.py", line 21, in __call__
result = self.next_app(environ, start_response)
File "/home/tsa/env/lib/python2.6/site-packages/repoze/zodbconn/cachecleanup.py", line 25, in __call__
return self.next_app(environ, start_response)
File "/home/tsa/env/lib/python2.6/site-packages/repoze/retry/__init__.py", line 65, in __call__
chunk = original_wsgi_input.read(rest)
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 474, in read
data = self.file.read(length)
File "/usr/lib/python2.6/socket.py", line 377, in read
data = self._sock.recv(left)
Note the line it blocks on is "self._sock.recv(left)", well after the response started.
In the trace I just provided, the block was on opening the DB connection *at the start of the request*:
...
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 287, in wsgi_execute
self.wsgi_start_response)
File "/home/tsa/env/lib/python2.6/site-packages/repoze/zodbconn/connector.py", line 18, in __call__
conn = self.db.open()
File "/home/tsa/env/lib/python2.6/site-packages/ZODB/DB.py", line 729, in open
self._a()
File "/usr/lib/python2.6/threading.py", line 123, in acquire
rc = self.__block.acquire(blocking)
Why would the database start blocking on opening a new database connection? The
issue does indeed seem to be with ZODB.
Thanks,
- Claudiu