)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ee56aaa6d8de1471ed08ddc03369042368466bcb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"in thread local storage unless overwrite\u003dFalse is specified."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This adds overwrite\u003dFalse to the empty RequestContext to prevent it"},{"line_number":15,"context_line":"from overwriting the thread local context. All of the other periodic"},{"line_number":16,"context_line":"tasks use get_admin_context() which also creates a RequestContext with"},{"line_number":17,"context_line":"overwrite\u003dFalse."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1627838"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a98d1f4_d7b95bee","line":17,"range":{"start_line":15,"start_character":43,"end_line":17,"end_character":16},"updated":"2016-09-28 15:26:33.000000000","message":"Yup:\n\nhttps://github.com/openstack/nova/blob/d3536457e8924d223f32abab0927ebe77f49ad6e/nova/service.py#L251\n\nhttps://github.com/openstack/nova/blob/d3536457e8924d223f32abab0927ebe77f49ad6e/nova/context.py#L289\n\nHaving said that, is there a reason this periodic task gets runs with an empty context rather than an admin context like the other periodic tasks?","commit_id":"d218f0df65729e2818a63a22f9eb476d376e168e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e7c396b7e34fd1394fa5cda58278908c75ae2bcb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"in thread local storage unless overwrite\u003dFalse is specified."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This adds overwrite\u003dFalse to the empty RequestContext to prevent it"},{"line_number":15,"context_line":"from overwriting the thread local context. All of the other periodic"},{"line_number":16,"context_line":"tasks use get_admin_context() which also creates a RequestContext with"},{"line_number":17,"context_line":"overwrite\u003dFalse."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1627838"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a98d1f4_b4dbe61a","line":17,"range":{"start_line":15,"start_character":43,"end_line":17,"end_character":16},"in_reply_to":"3a98d1f4_d7b95bee","updated":"2016-09-28 16:47:07.000000000","message":"Most (maybe all) of the other periodic tasks access the db, so they need a real context (that isn\u0027t the user\u0027s context) to do queries. My periodic task doesn\u0027t access the db, so get_admin_context() didn\u0027t seem necessary, but I missed the part where get_admin_context() specifies overwrite\u003dFalse when it creates the RequestContext.","commit_id":"d218f0df65729e2818a63a22f9eb476d376e168e"}],"nova/tests/functional/regressions/test_bug_1627838.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"858c6b218b171e3e20313a57eb14f64ad71c94c4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class TestThreadLocalContext(test.TestCase):"},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(TestThreadLocalContext, self).setUp()"},{"line_number":23,"context_line":"        self.useFixture(context_fixture.ClearRequestContext())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_179f4304","line":20,"range":{"start_line":20,"start_character":34,"end_line":20,"end_character":42},"updated":"2016-09-28 15:30:58.000000000","message":"We don\u0027t need the database for this right? Should extend NoDBTestCase.","commit_id":"d218f0df65729e2818a63a22f9eb476d376e168e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e1c7b31c57904a1fd84bc3ecfaccc6a447fe4d84","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class TestThreadLocalContext(test.TestCase):"},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(TestThreadLocalContext, self).setUp()"},{"line_number":23,"context_line":"        self.useFixture(context_fixture.ClearRequestContext())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_b2313def","line":20,"range":{"start_line":20,"start_character":34,"end_line":20,"end_character":42},"in_reply_to":"3a98d1f4_179f4304","updated":"2016-09-28 15:33:41.000000000","message":"Oh I guess we do when we start the service:\n\nnova.tests.functional.regressions.test_bug_1627838.TestThreadLocalContext.test_context_not_overwritten_by_periodic_tasks\n------------------------------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n      File \"nova/tests/functional/regressions/test_bug_1627838.py\", line 27, in setUp\n        self.start_service(\u0027compute\u0027)\n      File \"nova/test.py\", line 290, in start_service\n        nova_fixtures.ServiceFixture(name, host, **kwargs))\n      File \"/home/user/git/nova/.tox/functional/local/lib/python2.7/site-packages/testtools/testcase.py\", line 756, in useFixture\n        reraise(*exc_info)\n      File \"/home/user/git/nova/.tox/functional/local/lib/python2.7/site-packages/testtools/testcase.py\", line 731, in useFixture\n        fixture.setUp()\n      File \"nova/tests/fixtures.py\", line 66, in setUp\n        self.service.start()\n      File \"nova/service.py\", line 121, in start\n        ctxt, self.host, self.binary)\n      File \"/home/user/git/nova/.tox/functional/local/lib/python2.7/site-packages/oslo_versionedobjects/base.py\", line 184, in wrapper\n        result \u003d fn(cls, context, *args, **kwargs)\n      File \"nova/objects/service.py\", line 255, in get_by_host_and_binary\n        return cls._from_db_object(context, cls(), db_service)\n      File \"nova/objects/service.py\", line 206, in _from_db_object\n        service[key] \u003d db_service[key]\n      File \"/home/user/git/nova/.tox/functional/local/lib/python2.7/site-packages/oslo_versionedobjects/base.py\", line 791, in __setitem__\n        setattr(self, name, value)\n      File \"/home/user/git/nova/.tox/functional/local/lib/python2.7/site-packages/oslo_versionedobjects/base.py\", line 72, in setter\n        field_value \u003d field.coerce(self, name, value)\n      File \"/home/user/git/nova/.tox/functional/local/lib/python2.7/site-packages/oslo_versionedobjects/fields.py\", line 195, in coerce\n        return self._type.coerce(obj, attr, value)\n      File \"/home/user/git/nova/.tox/functional/local/lib/python2.7/site-packages/oslo_versionedobjects/fields.py\", line 457, in coerce\n        {\u0027attr\u0027: attr, \u0027type\u0027: type(value).__name__})\n    ValueError: A datetime.datetime is required in field created_at, not a MagicMock","commit_id":"d218f0df65729e2818a63a22f9eb476d376e168e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e7c396b7e34fd1394fa5cda58278908c75ae2bcb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class TestThreadLocalContext(test.TestCase):"},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(TestThreadLocalContext, self).setUp()"},{"line_number":23,"context_line":"        self.useFixture(context_fixture.ClearRequestContext())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_34ab568b","line":20,"range":{"start_line":20,"start_character":34,"end_line":20,"end_character":42},"in_reply_to":"3a98d1f4_b2313def","updated":"2016-09-28 16:47:07.000000000","message":"Yeah, I tried NoDBTestCase first and fell back on TestCase after the fail.","commit_id":"d218f0df65729e2818a63a22f9eb476d376e168e"}]}
