)]}'
{"gnocchi/storage/_carbonara.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c3d9c61081f8950645dce83d13db5017db910a36","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                                      aggregation, granularity):"},{"line_number":106,"context_line":"        data \u003d self._get_measures(metric, key, aggregation, granularity)"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            return carbonara.TimeSerie.unserialize(data)"},{"line_number":109,"context_line":"        except ValueError:"},{"line_number":110,"context_line":"                LOG.error(\"Data corruption detected for %s \""},{"line_number":111,"context_line":"                          \"aggregated `%s\u0027 timeserie, granularity `%s\u0027 \""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_795f9841","line":108,"updated":"2016-01-21 20:40:35.000000000","message":"AggregatedTimeSerie?","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2f10fcc0e6415b2c6a143d31ee854a268419391e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                                      aggregation, granularity):"},{"line_number":106,"context_line":"        data \u003d self._get_measures(metric, key, aggregation, granularity)"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            return carbonara.TimeSerie.unserialize(data)"},{"line_number":109,"context_line":"        except ValueError:"},{"line_number":110,"context_line":"                LOG.error(\"Data corruption detected for %s \""},{"line_number":111,"context_line":"                          \"aggregated `%s\u0027 timeserie, granularity `%s\u0027 \""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_b9e5e238","line":108,"in_reply_to":"9a68dd71_795f9841","updated":"2016-01-22 14:46:37.000000000","message":"No, now it\u0027s small TimeSerie that compose a big AggregatedTimeSerie :)","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c3d9c61081f8950645dce83d13db5017db910a36","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        all_keys \u003d None"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            all_keys \u003d self._list_split_keys_for_metric("},{"line_number":130,"context_line":"                metric, aggregation, granularity)"},{"line_number":131,"context_line":"        except storage.MetricDoesNotExist:"},{"line_number":132,"context_line":"            # This can happen if it\u0027s an old metric with a TimeSerieArchive"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_1e1c4276","line":129,"updated":"2016-01-21 20:40:35.000000000","message":"_list_split_keys_for_metric should be some sort of abstractmethod or raise notimplemented to ensure it gets implemented","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2f10fcc0e6415b2c6a143d31ee854a268419391e","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        all_keys \u003d None"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            all_keys \u003d self._list_split_keys_for_metric("},{"line_number":130,"context_line":"                metric, aggregation, granularity)"},{"line_number":131,"context_line":"        except storage.MetricDoesNotExist:"},{"line_number":132,"context_line":"            # This can happen if it\u0027s an old metric with a TimeSerieArchive"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_d9b9b616","line":129,"in_reply_to":"9a68dd71_1e1c4276","updated":"2016-01-22 14:46:37.000000000","message":"Done","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c3d9c61081f8950645dce83d13db5017db910a36","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                # It really does not exist"},{"line_number":143,"context_line":"                for d in metric.archive_policy.definition:"},{"line_number":144,"context_line":"                    if d.granularity \u003d\u003d granularity:"},{"line_number":145,"context_line":"                        return carbonara.AggregatedTimeSerie("},{"line_number":146,"context_line":"                            aggregation_method\u003daggregation,"},{"line_number":147,"context_line":"                            sampling\u003dgranularity,"},{"line_number":148,"context_line":"                            max_size\u003dd.points)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_f92b88e9","line":145,"updated":"2016-01-21 20:40:35.000000000","message":"what are we returning if \u0027it really does not exist?\u0027","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2f10fcc0e6415b2c6a143d31ee854a268419391e","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                # It really does not exist"},{"line_number":143,"context_line":"                for d in metric.archive_policy.definition:"},{"line_number":144,"context_line":"                    if d.granularity \u003d\u003d granularity:"},{"line_number":145,"context_line":"                        return carbonara.AggregatedTimeSerie("},{"line_number":146,"context_line":"                            aggregation_method\u003daggregation,"},{"line_number":147,"context_line":"                            sampling\u003dgranularity,"},{"line_number":148,"context_line":"                            max_size\u003dd.points)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_5944e619","line":145,"in_reply_to":"9a68dd71_f92b88e9","updated":"2016-01-22 14:46:37.000000000","message":"Nothing, there\u0027s a raise just below :)","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"}],"gnocchi/storage/ceph.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c3d9c61081f8950645dce83d13db5017db910a36","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                    ioctx.remove_object(xattr)"},{"line_number":167,"context_line":"            for name in (\u0027container\u0027, \u0027none\u0027):"},{"line_number":168,"context_line":"                try:"},{"line_number":169,"context_line":"                    ioctx.remove_object(\"gnocchi_%s_%s\" % (metric.id, name))"},{"line_number":170,"context_line":"                except rados.ObjectNotFound:"},{"line_number":171,"context_line":"                    # Maybe it never got measures"},{"line_number":172,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_54c4db5d","line":169,"updated":"2016-01-21 20:40:35.000000000","message":"is this to remove all old-style/not-split objects?","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2f10fcc0e6415b2c6a143d31ee854a268419391e","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                    ioctx.remove_object(xattr)"},{"line_number":167,"context_line":"            for name in (\u0027container\u0027, \u0027none\u0027):"},{"line_number":168,"context_line":"                try:"},{"line_number":169,"context_line":"                    ioctx.remove_object(\"gnocchi_%s_%s\" % (metric.id, name))"},{"line_number":170,"context_line":"                except rados.ObjectNotFound:"},{"line_number":171,"context_line":"                    # Maybe it never got measures"},{"line_number":172,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_b96ac27f","line":169,"in_reply_to":"9a68dd71_54c4db5d","updated":"2016-01-22 14:46:37.000000000","message":"container is a fake object used to indicate that the metric exists\nnone is the non-aggregated timeserie we use since… the dawn of times!","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c3d9c61081f8950645dce83d13db5017db910a36","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            except rados.ObjectNotFound:"},{"line_number":199,"context_line":"                raise storage.MetricDoesNotExist(metric)"},{"line_number":200,"context_line":"            keys \u003d []"},{"line_number":201,"context_line":"            for xattr, value in xattrs:"},{"line_number":202,"context_line":"                _, metric_id, key, agg, g \u003d xattr.split(\u0027_\u0027, 4)"},{"line_number":203,"context_line":"                if aggregation \u003d\u003d agg and granularity \u003d\u003d float(g):"},{"line_number":204,"context_line":"                    keys.append(key)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_f42b8fe9","line":201,"updated":"2016-01-21 20:40:35.000000000","message":"value is never used","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"}],"gnocchi/storage/swift.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c3d9c61081f8950645dce83d13db5017db910a36","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            for obj in files:"},{"line_number":162,"context_line":"                self.swift.delete_object(container, obj[\u0027name\u0027])"},{"line_number":163,"context_line":"            try:"},{"line_number":164,"context_line":"                self.swift.delete_container(container)"},{"line_number":165,"context_line":"            except swclient.ClientException as e:"},{"line_number":166,"context_line":"                if e.http_status !\u003d 404:"},{"line_number":167,"context_line":"                    # Deleted in the meantime? Whatever."}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_0f2f2ef7","line":164,"updated":"2016-01-21 20:40:35.000000000","message":"this blows my mind you can\u0027t delete a container and everything in it in one call... is this an some safety mechanism or something?!","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2f10fcc0e6415b2c6a143d31ee854a268419391e","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            for obj in files:"},{"line_number":162,"context_line":"                self.swift.delete_object(container, obj[\u0027name\u0027])"},{"line_number":163,"context_line":"            try:"},{"line_number":164,"context_line":"                self.swift.delete_container(container)"},{"line_number":165,"context_line":"            except swclient.ClientException as e:"},{"line_number":166,"context_line":"                if e.http_status !\u003d 404:"},{"line_number":167,"context_line":"                    # Deleted in the meantime? Whatever."}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_b9c64266","line":164,"in_reply_to":"9a68dd71_0f2f2ef7","updated":"2016-01-22 14:46:37.000000000","message":"I don\u0027t know! But yeah that\u0027s how it works AFAICT.","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"}],"gnocchi/tests/test_storage.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c3d9c61081f8950645dce83d13db5017db910a36","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.assertIsInstance(driver, null.NullStorage)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @mock.patch(\u0027gnocchi.storage._carbonara.LOG\u0027)"},{"line_number":44,"context_line":"    def test_corrupted_data(self, logger):"},{"line_number":45,"context_line":"        if not isinstance(self.storage, _carbonara.CarbonaraBasedStorage):"},{"line_number":46,"context_line":"            self.skipTest(\"This driver is not based on Carbonara\")"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_3e2106fc","line":44,"updated":"2016-01-21 20:40:35.000000000","message":"i\u0027m not sure this test does anything anymore","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2f10fcc0e6415b2c6a143d31ee854a268419391e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.assertIsInstance(driver, null.NullStorage)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @mock.patch(\u0027gnocchi.storage._carbonara.LOG\u0027)"},{"line_number":44,"context_line":"    def test_corrupted_data(self, logger):"},{"line_number":45,"context_line":"        if not isinstance(self.storage, _carbonara.CarbonaraBasedStorage):"},{"line_number":46,"context_line":"            self.skipTest(\"This driver is not based on Carbonara\")"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_b99de267","line":44,"in_reply_to":"9a68dd71_3e2106fc","updated":"2016-01-22 14:46:37.000000000","message":"it still does somehow because we still raise error with side_effect. We\u0027re just not checking anymore that things are logged because it\u0027s not exactly the case.","commit_id":"2c3d16c6bd3e5089828234839bd3694f2b9d068a"}]}
