)]}'
{"gnocchi/storage/ceph.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"16cea90f38c08e8c89cb492aae7579607e620748","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            for n in object_names:"},{"line_number":119,"context_line":"                try:"},{"line_number":120,"context_line":"                    ctx.rm_xattr(self.MEASURE_PREFIX, n)"},{"line_number":121,"context_line":"                    ctx.aio_remove(n)"},{"line_number":122,"context_line":"                except rados.ObjectNotFound:"},{"line_number":123,"context_line":"                    # Another worker may have removed it, don\u0027t worry."},{"line_number":124,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_295fa2e6","line":121,"updated":"2016-02-10 20:55:54.000000000","message":"This cannot raise rados.ObjectNotFound anymore. But ctx.rm_xattr() can still raise it.","commit_id":"6341bfd4a82f90968b341443a92557693d035286"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"16cea90f38c08e8c89cb492aae7579607e620748","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    ioctx.aio_remove(xattr)"},{"line_number":188,"context_line":"            for name in (\u0027container\u0027, \u0027none\u0027):"},{"line_number":189,"context_line":"                try:"},{"line_number":190,"context_line":"                    ioctx.aio_remove(\"gnocchi_%s_%s\" % (metric.id, name))"},{"line_number":191,"context_line":"                except rados.ObjectNotFound:"},{"line_number":192,"context_line":"                    # Maybe it never got measures"},{"line_number":193,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_c9c04e7f","line":190,"updated":"2016-02-10 20:55:54.000000000","message":"This cannot raise rados.ObjectNotFound anymore.","commit_id":"6341bfd4a82f90968b341443a92557693d035286"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"16cea90f38c08e8c89cb492aae7579607e620748","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        with self._get_ioctx() as ioctx:"},{"line_number":281,"context_line":"            for aggregation in metric.archive_policy.aggregation_methods:"},{"line_number":282,"context_line":"                try:"},{"line_number":283,"context_line":"                    ioctx.aio_remove("},{"line_number":284,"context_line":"                        str(\"gnocchi_%s_%s\" % (metric.id, aggregation)))"},{"line_number":285,"context_line":"                except rados.ObjectNotFound:"},{"line_number":286,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_69bfdafb","line":283,"updated":"2016-02-10 20:55:54.000000000","message":"This cannot raise rados.ObjectNotFound anymore.","commit_id":"6341bfd4a82f90968b341443a92557693d035286"}],"gnocchi/tests/base.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bee5ab1a9329449f7e7c6c9c77ed20b613b33108","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            del self.kvs[key]"},{"line_number":145,"context_line":"            del self.kvs_xattrs[key]"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        def aio_remove(self, key):"},{"line_number":148,"context_line":"            self._validate_key(key)"},{"line_number":149,"context_line":"            self.kvs.pop(key, None)"},{"line_number":150,"context_line":"            self.kvs_xattrs.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a57f1b5_6cbb3ae6","line":147,"updated":"2016-02-11 14:53:26.000000000","message":"aio_remove \u003d remove_object\n\nno?","commit_id":"958151dcc93bd32a7ac5ac25e5423093bbee5c54"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"26e0841798a8941bd73c8590a96c4dd6b72af6f3","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            del self.kvs[key]"},{"line_number":145,"context_line":"            del self.kvs_xattrs[key]"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        def aio_remove(self, key):"},{"line_number":148,"context_line":"            self._validate_key(key)"},{"line_number":149,"context_line":"            self.kvs.pop(key, None)"},{"line_number":150,"context_line":"            self.kvs_xattrs.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a57f1b5_89f0d9ff","line":147,"in_reply_to":"3a57f1b5_6cbb3ae6","updated":"2016-02-11 18:32:23.000000000","message":"i had to create a new one because there are a lot of cases where the object is deleted already and \u0027remove_object\u0027 will throw ObjectNotFound. this doesn\u0027t happen in aio_remove according to sileht so i remove the catch in code.","commit_id":"958151dcc93bd32a7ac5ac25e5423093bbee5c54"}]}
