From ad0dddb938b8b68b27244fdd602750b036b11b2d Mon Sep 17 00:00:00 2001 From: Tom Kralidis Date: Wed, 7 Jun 2017 12:25:41 -0400 Subject: [PATCH] Do not silence exceptions on custom plugins (#487) (#527) --- pycsw/server.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pycsw/server.py b/pycsw/server.py index 149592583..b2232c275 100644 --- a/pycsw/server.py +++ b/pycsw/server.py @@ -273,6 +273,7 @@ def oaipmh(self): def dispatch(self, writer=sys.stdout, write_headers=True): """ Handle incoming HTTP request """ + error = 0 if self.requesttype == 'GET': self.kvp = self.normalize_kvp(self.kvp) version_202 = ('version' in self.kvp and @@ -384,10 +385,12 @@ def dispatch(self, writer=sys.stdout, write_headers=True): self.repository = rs_cls(self.context, repo_filter) LOGGER.debug('Custom repository %s loaded (%s)', rs, self.repository.dbtype) except Exception as err: - msg = 'Could not load custom repository' + msg = 'Could not load custom repository %s: %s' % (rs, err) LOGGER.exception(msg) - self.response = self.iface.exceptionreport( - 'NoApplicableCode', 'service', msg) + error = 1 + code = 'NoApplicableCode' + locator = 'service' + text = 'Could not initialize repository. Check server logs' else: # load default repository self.orm = 'sqlalchemy' @@ -404,18 +407,18 @@ def dispatch(self, writer=sys.stdout, write_headers=True): LOGGER.debug( 'Repository loaded (local): %s.' % self.repository.dbtype) except Exception as err: - msg = 'Could not load repository (local)' + msg = 'Could not load repository (local): %s' % err LOGGER.exception(msg) - self.response = self.iface.exceptionreport( - 'NoApplicableCode', 'service', msg) + error = 1 + code = 'NoApplicableCode' + locator = 'service' + text = 'Could not initialize repository. Check server logs' if self.requesttype == 'POST': LOGGER.debug('HTTP POST request') LOGGER.debug('CSW version: %s', self.iface.version) self.kvp = self.iface.parse_postdata(self.request) - error = 0 - if isinstance(self.kvp, str): # it's an exception error = 1 locator = 'service'