diff --git a/swift/obj/expirer.py b/swift/obj/expirer.py index fdf711962b..158deacf85 100644 --- a/swift/obj/expirer.py +++ b/swift/obj/expirer.py @@ -118,7 +118,7 @@ class ObjectExpirer(Daemon): obj = o['name'].encode('utf8') if processes > 0: obj_process = int( - hashlib.md5('%s/%s' % (container, obj)). + hashlib.md5('%s/%s' % (str(container), obj)). hexdigest(), 16) if obj_process % processes != process: continue diff --git a/test/unit/obj/test_expirer.py b/test/unit/obj/test_expirer.py index faa46fdb2b..1e43f9c754 100644 --- a/test/unit/obj/test_expirer.py +++ b/test/unit/obj/test_expirer.py @@ -153,11 +153,12 @@ class TestObjectExpirer(TestCase): def delete_container(*a, **kw): pass + ukey = u'3' containers = { 0: set('1-one 2-two 3-three'.split()), 1: set('2-two 3-three 4-four'.split()), 2: set('5-five 6-six'.split()), - 3: set('7-seven'.split()), + ukey: set(u'7-seven\u2661'.split()), } x = ObjectExpirer({}) x.swift = InternalClient(containers) @@ -168,6 +169,8 @@ class TestObjectExpirer(TestCase): x.run_once() self.assertNotEqual(deleted_objects, x.deleted_objects) deleted_objects = deepcopy(x.deleted_objects) + self.assertEqual(containers[ukey].pop(), + deleted_objects[ukey].pop().decode('utf8')) self.assertEqual(containers, deleted_objects) def test_delete_object(self):