)]}'
{"gnocchi/storage/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3e09fe74d8f4c49bf6c0f294af3e4c1aa03e5400","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        for m in metrics_to_expunge:"},{"line_number":192,"context_line":"            try:"},{"line_number":193,"context_line":"                self.delete_metric(m, sync)"},{"line_number":194,"context_line":"            except coordination.LockAcquiredFailed:"},{"line_number":195,"context_line":"                continue  # another process is working on it."},{"line_number":196,"context_line":"            except Exception:"},{"line_number":197,"context_line":"                if sync:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ff52f3f_41eba9af","line":194,"updated":"2017-04-13 08:34:27.000000000","message":"this should be caught in delete_metric. it breaks the abstraction layer as a storage driver is not (in theory) mandated to use tooz.\n\nplus this would make sure no future usage of delete_metric have to handle that, which is not obvious since tooz is hidden in the storage driver","commit_id":"67f588ccef2636db63f4e8a52808cf440234a885"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8d954e6f3c6436a709eabd4bd4d5414a6e926d79","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        for m in metrics_to_expunge:"},{"line_number":192,"context_line":"            try:"},{"line_number":193,"context_line":"                self.delete_metric(m, sync)"},{"line_number":194,"context_line":"            except coordination.LockAcquiredFailed:"},{"line_number":195,"context_line":"                continue  # another process is working on it."},{"line_number":196,"context_line":"            except Exception:"},{"line_number":197,"context_line":"                if sync:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ff52f3f_2bc87753","line":194,"in_reply_to":"9ff52f3f_41eba9af","updated":"2017-04-13 13:31:13.000000000","message":"so i think we need to raise something here (or change delete_metric to not use lock through contextmanager). i added this here because because if we catch in delete_metric, this method will continue on and call index.expunge_metric below and remove the metric from index regardless what happens with the other process holding lock and deleting from storage.\n\ni\u0027ll just drop contextmanager i think.","commit_id":"67f588ccef2636db63f4e8a52808cf440234a885"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4d30b58bb03fc3d698303a14b2fafd61eb8a6123","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                    raise"},{"line_number":209,"context_line":"                LOG.error(\"Unable to expunge metric %s from storage\", m,"},{"line_number":210,"context_line":"                          exc_info\u003dTrue)"},{"line_number":211,"context_line":"                continue"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @staticmethod"},{"line_number":214,"context_line":"    def process_new_measures(indexer, metrics, sync\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_b52f44f5","line":211,"updated":"2017-04-14 14:03:13.000000000","message":"useless now","commit_id":"57013e65c0bff1b21e2e4e0dd47a5aa188221b96"}],"gnocchi/storage/_carbonara.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4d30b58bb03fc3d698303a14b2fafd61eb8a6123","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        try:"},{"line_number":344,"context_line":"            self._delete_metric(metric)"},{"line_number":345,"context_line":"            self.incoming.delete_unprocessed_measures_for_metric_id(metric.id)"},{"line_number":346,"context_line":"        except Exception:"},{"line_number":347,"context_line":"            raise"},{"line_number":348,"context_line":"        finally:"},{"line_number":349,"context_line":"            lock.release()"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_f544acb9","line":347,"range":{"start_line":346,"start_character":8,"end_line":347,"end_character":17},"updated":"2017-04-14 14:03:13.000000000","message":"useless","commit_id":"57013e65c0bff1b21e2e4e0dd47a5aa188221b96"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0158c548091030bdbfd98f89fc9ec794aae568b7","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        try:"},{"line_number":344,"context_line":"            self._delete_metric(metric)"},{"line_number":345,"context_line":"            self.incoming.delete_unprocessed_measures_for_metric_id(metric.id)"},{"line_number":346,"context_line":"        except Exception:"},{"line_number":347,"context_line":"            raise"},{"line_number":348,"context_line":"        finally:"},{"line_number":349,"context_line":"            lock.release()"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_bd847fb2","line":347,"range":{"start_line":346,"start_character":8,"end_line":347,"end_character":17},"in_reply_to":"7ffa3b31_f544acb9","updated":"2017-04-18 17:14:16.000000000","message":"hmm. i don\u0027t know why i thought except was mandatory.","commit_id":"57013e65c0bff1b21e2e4e0dd47a5aa188221b96"}]}
