Merge pull request #151 from vbanos/fix-runtime-error

Fix runtime error
This commit is contained in:
Barbara Miller 2020-07-09 15:12:00 -07:00 committed by GitHub
commit ca3d5d4edd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 9 deletions

View File

@ -34,7 +34,7 @@ before_install:
- ping -c2 trough
install:
- pip install . pytest requests warcio mock
- pip install .[trough] pytest requests warcio mock
before_script:
- docker exec trough bash -c 'while ! test -e /tmp/trough-read.out ; do sleep 0.5 ; done' || true

View File

@ -28,7 +28,7 @@ deps = [
'warctools>=4.10.0',
'urlcanon>=0.3.0',
'doublethink>=0.2.0.dev87',
'urllib3>=1.14',
'urllib3>=1.23',
'requests>=2.0.1',
'PySocks>=1.6.8',
'cryptography>=2.3',

View File

@ -649,13 +649,17 @@ class PooledMixIn(socketserver.ThreadingMixIn):
def process_request(self, request, client_address):
self.active_requests[request] = doublethink.utcnow()
future = self.pool.submit(
self.process_request_thread, request, client_address)
future.add_done_callback(
lambda f: self.active_requests.pop(request, None))
if future.done():
# avoid theoretical timing issue, in case process_request_thread
# managed to finish before future.add_done_callback() ran
try:
future = self.pool.submit(
self.process_request_thread, request, client_address)
future.add_done_callback(
lambda f: self.active_requests.pop(request, None))
if future.done():
# avoid theoretical timing issue, in case process_request_thread
# managed to finish before future.add_done_callback() ran
self.active_requests.pop(request, None)
except RuntimeError as exc:
self.logger.error("Error processing request %s", str(exc))
self.active_requests.pop(request, None)
def get_request(self):