From cf1a1e89bbca50e285e99d31209c6eac6c697083 Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Wed, 23 Aug 2017 07:25:09 +0000 Subject: [PATCH] expirer: unexpected responses don't warrant tracebacks If you want more information, you need to go check out the *other* node. Maybe this should be further refined to only log at debug for specific statuses like 404 and 412? Partial-Bug: 1688558 Related-Bug: 1455221 Change-Id: Ieefd8841154faba40dcf2a03abc5f056bdccd54f --- swift/obj/expirer.py | 12 +++++++++--- test/unit/obj/test_expirer.py | 10 ++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/swift/obj/expirer.py b/swift/obj/expirer.py index 012d0f033b..a65c828551 100644 --- a/swift/obj/expirer.py +++ b/swift/obj/expirer.py @@ -272,12 +272,18 @@ class ObjectExpirer(Daemon): self.pop_queue(container, obj) self.report_objects += 1 self.logger.increment('objects') + except UnexpectedResponse as err: + self.logger.increment('errors') + self.logger.error( + 'Unexpected response while deleting object %(container)s ' + '%(obj)s: %(err)s' % {'container': container, 'obj': obj, + 'err': str(err.resp.status_int)}) except (Exception, Timeout) as err: self.logger.increment('errors') self.logger.exception( - _('Exception while deleting object %(container)s %(obj)s' - ' %(err)s') % {'container': container, - 'obj': obj, 'err': str(err)}) + 'Exception while deleting object %(container)s %(obj)s' + ' %(err)s' % {'container': container, + 'obj': obj, 'err': str(err)}) self.logger.timing_since('timing', start_time) self.report() diff --git a/test/unit/obj/test_expirer.py b/test/unit/obj/test_expirer.py index 9849f6d825..a542caf092 100644 --- a/test/unit/obj/test_expirer.py +++ b/test/unit/obj/test_expirer.py @@ -252,8 +252,14 @@ class TestObjectExpirer(TestCase): self.assertFalse(pop_queue.called) self.assertEqual(start_reports, x.report_objects) self.assertEqual(1, len(log_lines)) - self.assertIn('Exception while deleting object container obj', - log_lines[0]) + if isinstance(exc, internal_client.UnexpectedResponse): + self.assertEqual( + log_lines[0], + 'Unexpected response while deleting object container ' + 'obj: %s' % exc.resp.status_int) + else: + self.assertTrue(log_lines[0].startswith( + 'Exception while deleting object container obj')) # verify pop_queue logic on exceptions for exc, ts, should_pop in [(None, timestamp, True),