)]}'
{"nova/objects/migration.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"01d469f4901b71d6023b8d417315e9e33c188c7e","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.uuid \u003d uuidutils.generate_uuid()"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            self.save()"},{"line_number":121,"context_line":"        except db_exc.DBError:"},{"line_number":122,"context_line":"            fresh \u003d self.__class__.get_by_id(self.context, self.id)"},{"line_number":123,"context_line":"            self.uuid \u003d fresh.uuid"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_8a46fc20","line":121,"updated":"2017-08-25 09:48:57.000000000","message":"It\u0027s non obvious what\u0027s happening here","commit_id":"55c2eb16f4c0770930e00dca9947c788f9ac1ad4"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1ee3f89d675b4140c0232520b0f56134733fdb30","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.save()"},{"line_number":121,"context_line":"        except db_exc.DBError:"},{"line_number":122,"context_line":"            # NOTE(danms) We raced to generate a uuid for this,"},{"line_number":123,"context_line":"            # so fetch the winner and use that uuid"},{"line_number":124,"context_line":"            fresh \u003d self.__class__.get_by_id(self.context, self.id)"},{"line_number":125,"context_line":"            self.uuid \u003d fresh.uuid"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_5338a5ed","line":123,"updated":"2017-08-28 12:08:53.000000000","message":"thanks, in that case would a db_exc.DBDuplicateEntry be the safer option? If some other DBError happens, we\u0027ll call get_by_id, which will fail and give a misleading error","commit_id":"c364664ce169591f179bcd75d2cf119ac5e3ebe8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"00244424845a003fbc5f6fe251ffee5cbe144cef","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.save()"},{"line_number":121,"context_line":"        except db_exc.DBError:"},{"line_number":122,"context_line":"            # NOTE(danms) We raced to generate a uuid for this,"},{"line_number":123,"context_line":"            # so fetch the winner and use that uuid"},{"line_number":124,"context_line":"            fresh \u003d self.__class__.get_by_id(self.context, self.id)"},{"line_number":125,"context_line":"            self.uuid \u003d fresh.uuid"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_08dbff7b","line":123,"in_reply_to":"7f287b81_5338a5ed","updated":"2017-08-28 17:34:13.000000000","message":"Ah, actually I just put this here while streaming it out of my brain, meaning to go back and get the actual exception name, didn\u0027t, and then was confused about why you didn\u0027t understand what was going on here. So, yes.","commit_id":"c364664ce169591f179bcd75d2cf119ac5e3ebe8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1d645ad603630bd8ddd8b9b26a57441ac821d038","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":122,"context_line":"            # NOTE(danms) We raced to generate a uuid for this,"},{"line_number":123,"context_line":"            # so fetch the winner and use that uuid"},{"line_number":124,"context_line":"            fresh \u003d self.__class__.get_by_id(self.context, self.id)"},{"line_number":125,"context_line":"            self.uuid \u003d fresh.uuid"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_5623dabd","line":124,"range":{"start_line":124,"start_character":25,"end_line":124,"end_character":34},"updated":"2017-08-29 08:02:38.000000000","message":"this isn\u0027t necessary...\n\n \u003e\u003e\u003e class A:\n ...     @classmethod\n ...     def myclassmethod(cls):\n ...         return cls()\n ... \n \u003e\u003e\u003e a \u003d A()\n \u003e\u003e\u003e b \u003d a.myclassmethod()\n \u003e\u003e\u003e b\n \u003c__main__.A instance at 0x7f8000f65d88\u003e","commit_id":"477c01ed720e0eb8fab9bdd9b30f306fd62aba49"}]}
