diff --git a/bin/debexpo_worker.py b/bin/debexpo_worker.py index d6b738b051ff38354f775db7aad91dcfc9eb9e79..551b7d34c5d0c40d0da8bcb194d62fff6678309d 100755 --- a/bin/debexpo_worker.py +++ b/bin/debexpo_worker.py @@ -48,6 +48,7 @@ import pylons import optparse import signal import datetime +from socket import setdefaulttimeout from paste.deploy import appconfig from debexpo.config.environment import load_environment @@ -75,6 +76,9 @@ class Worker(object): self.can_continue = True signal.signal(signal.SIGTERM, self._on_sig_term) + # Set default socket timeout to 30s to avoid hanging indefinitely + setdefaulttimeout(30) + def _on_sig_term(self, sig, frame): log.info("Received SIGTERM, shutting down worker after current run.") self._remove_pid() diff --git a/debexpo/plugins/debianqa.py b/debexpo/plugins/debianqa.py index 3ce3fe2af3a8e71328b08441b337eb809ab60548..2f9149ab40be49df9fd1fe3dd28fbd7847edfbf0 100644 --- a/debexpo/plugins/debianqa.py +++ b/debexpo/plugins/debianqa.py @@ -43,6 +43,7 @@ __license__ = 'MIT' import logging import lxml.html import urllib2 +from socket import timeout from debexpo.model import meta from debexpo.model.users import User @@ -60,7 +61,8 @@ class DebianPlugin(BasePlugin): try: self.qa_page = urllib2.urlopen('https://tracker.debian.org/%s' % self.changes['Source']) - except urllib2.HTTPError: + except (urllib2.URLError, timeout) as e: + log.error('Failed to contact tracker: {}'.format(e)) return self.parsed_qa = lxml.html.fromstring(self.qa_page.read()) diff --git a/debexpo/plugins/getorigtarball.py b/debexpo/plugins/getorigtarball.py index 25f550314a5733ab06588af9058a05defc0a2efe..889d104adc6cc25a09b42f3e1a0c6229744f6136 100644 --- a/debexpo/plugins/getorigtarball.py +++ b/debexpo/plugins/getorigtarball.py @@ -121,7 +121,7 @@ class GetOrigTarballPlugin(BasePlugin): if not downloaded: log.debug('Failed to download from debian archive') - return self.failed('failed-to-download', + return self.failed(outcomes['failed-to-download'], (None, list(set(self.additional_files))), constants.PLUGIN_SEVERITY_ERROR) @@ -144,4 +144,5 @@ outcomes = { 'file present in the official archives'}, 'invalid-orig': {'name': 'Could not find a valid orig tarball'}, 'found-orig': {'name': 'Found origin tarball'}, + 'failed-to-download': {'name': 'Failed to download from debian archive'}, } diff --git a/development.ini b/development.ini index 25fe2dfe59f2d81d8b07681f2a8c8af7725324cd..29db0ebbe8ba8e33cd3eb5fd85efa00d67601f09 100644 --- a/development.ini +++ b/development.ini @@ -116,7 +116,7 @@ debexpo.cronjobdir = /tmp debexpo.cronjob_delay = 60 # NNTP server to connect to fetch mailing list comments/changes -debexpo.nntp_server = news.gmane.org +debexpo.nntp_server = news.gmane.io # Enable experimental and/or broken code debexpo.enable_experimental_code = true @@ -146,6 +146,7 @@ handlers = console level = DEBUG handlers = console qualname = debexpo +propagate = 0 [handler_console] class = StreamHandler diff --git a/live.ini b/live.ini index c1120e8dd04b8a29f09bc894ebe2bc8b591b56ba..e45923bf26c50fb2af926a2bf3d5b478e4e947e4 100644 --- a/live.ini +++ b/live.ini @@ -146,6 +146,7 @@ handlers = console, accesslog level = DEBUG handlers = console, accesslog qualname = debexpo +propagate = 0 [handler_console] class = StreamHandler diff --git a/test.ini b/test.ini index 6781405df753cd4fdda2ccd519b53de127cbf8ad..d7fe306f0e07384ea13acaedd648403ed2144b8e 100644 --- a/test.ini +++ b/test.ini @@ -116,7 +116,7 @@ debexpo.cronjobdir = /tmp debexpo.cronjob_delay = 60 # NNTP server to connect to fetch mailing list comments/changes -debexpo.nntp_server = news.gmane.org +debexpo.nntp_server = news.gmane.io # Enable experimental and/or broken code debexpo.enable_experimental_code = true @@ -149,6 +149,7 @@ handlers = console level = DEBUG handlers = console qualname = debexpo +propagate = 0 [handler_console] class = StreamHandler