)]}'
{"gnocchi/carbonara.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2b87f2526a402a62f00a25c2a61b0131d39109fa","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        # Pandas, Cython, whatever."},{"line_number":297,"context_line":"        self \u003d cls(value)"},{"line_number":298,"context_line":"        self._carbonara_sampling \u003d sampling"},{"line_number":299,"context_line":"        return self"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @classmethod"},{"line_number":302,"context_line":"    def from_timestamp_and_sampling(cls, timestamp, sampling):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_23d17e23","line":299,"updated":"2016-08-30 19:22:28.000000000","message":"returning on __init__ is a no-no :)\n\nwe should rename.","commit_id":"ccc9109560d1396d4bb5d3dc2537a69477d384ae"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0c13fb02db7f11dd74ba2a756cc07044ed3a70f0","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        # Pandas, Cython, whatever."},{"line_number":297,"context_line":"        self \u003d cls(value)"},{"line_number":298,"context_line":"        self._carbonara_sampling \u003d sampling"},{"line_number":299,"context_line":"        return self"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @classmethod"},{"line_number":302,"context_line":"    def from_timestamp_and_sampling(cls, timestamp, sampling):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_4f578025","line":299,"in_reply_to":"fa7ab95a_23d17e23","updated":"2016-08-30 21:35:17.000000000","message":"You did not read my # NOTE :(","commit_id":"ccc9109560d1396d4bb5d3dc2537a69477d384ae"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"bcf46a32519d01bcf73bcca0fe25f8880a536307","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        # Pandas, Cython, whatever."},{"line_number":297,"context_line":"        self \u003d cls(value)"},{"line_number":298,"context_line":"        self._carbonara_sampling \u003d sampling"},{"line_number":299,"context_line":"        return self"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @classmethod"},{"line_number":302,"context_line":"    def from_timestamp_and_sampling(cls, timestamp, sampling):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_5c3d75ba","line":299,"in_reply_to":"fa7ab95a_4f578025","updated":"2016-08-31 02:13:44.000000000","message":"i did. it just looks kind of weird looking at something that\u0027s kinda faking __init__","commit_id":"ccc9109560d1396d4bb5d3dc2537a69477d384ae"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4c1f0d31aade0575a0635e621a34b46bba2ad12c","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        if not self.ts.index.is_monotonic:"},{"line_number":445,"context_line":"            self.ts \u003d self.ts.sort_index()"},{"line_number":446,"context_line":"        offset_div \u003d self.sampling * 10e8"},{"line_number":447,"context_line":"        start \u003d ((pandas.Timestamp(start) if start else"},{"line_number":448,"context_line":"                  self.get_split_key())"},{"line_number":449,"context_line":"                 if padded else self.first).value"},{"line_number":450,"context_line":"        # calculate how many seconds from start the series runs until and"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_f2800649","line":447,"updated":"2016-08-31 15:19:47.000000000","message":"do we still need this if we made start param mandatory?","commit_id":"ccc9109560d1396d4bb5d3dc2537a69477d384ae"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6ffc6f5cb58f4a0e33d70c625be69a3d7558ade0","unresolved":false,"context_lines":[{"line_number":445,"context_line":"            self.ts \u003d self.ts.sort_index()"},{"line_number":446,"context_line":"        offset_div \u003d self.sampling * 10e8"},{"line_number":447,"context_line":"        start \u003d ((pandas.Timestamp(start) if start else"},{"line_number":448,"context_line":"                  self.get_split_key())"},{"line_number":449,"context_line":"                 if padded else self.first).value"},{"line_number":450,"context_line":"        # calculate how many seconds from start the series runs until and"},{"line_number":451,"context_line":"        # initialize list to store alternating delimiter, float entries"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_0dba6b23","line":448,"updated":"2016-09-01 13:27:17.000000000","message":"we made start mandatory, do we still need this check?","commit_id":"d8695791a581868a85388ccb310967c6b5e40ddb"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9d7b7cc0de002311b1912570dd42322c1dd0862c","unresolved":false,"context_lines":[{"line_number":445,"context_line":"            self.ts \u003d self.ts.sort_index()"},{"line_number":446,"context_line":"        offset_div \u003d self.sampling * 10e8"},{"line_number":447,"context_line":"        start \u003d ((pandas.Timestamp(start) if start else"},{"line_number":448,"context_line":"                  self.get_split_key())"},{"line_number":449,"context_line":"                 if padded else self.first).value"},{"line_number":450,"context_line":"        # calculate how many seconds from start the series runs until and"},{"line_number":451,"context_line":"        # initialize list to store alternating delimiter, float entries"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_185e2b12","line":448,"in_reply_to":"fa7ab95a_0dba6b23","updated":"2016-09-01 13:34:37.000000000","message":"no let me fix it","commit_id":"d8695791a581868a85388ccb310967c6b5e40ddb"}],"gnocchi/storage/_carbonara.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f024c3f79f04251be5064af4ba2152a12f3bbc9e","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        # oldest_mutable_timestamp)"},{"line_number":227,"context_line":"        write_full \u003d (self.WRITE_FULL"},{"line_number":228,"context_line":"                      or key + datetime.timedelta("},{"line_number":229,"context_line":"                          seconds\u003darchive_policy_def.granularity)"},{"line_number":230,"context_line":"                      \u003c\u003d oldest_mutable_timestamp)"},{"line_number":231,"context_line":"        key_as_str \u003d carbonara.AggregatedTimeSerie.split_key_to_string(key)"},{"line_number":232,"context_line":"        if write_full:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_11bbd673","line":229,"range":{"start_line":229,"start_character":53,"end_line":229,"end_character":64},"updated":"2016-08-25 21:43:06.000000000","message":"should this be timespan? key is the start of the split so this would only be the second point?","commit_id":"3eeb4e3a217c6abf46796d29c7d5e99ba634aad3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9152c8d7404d26d068037a10ad3ea70be94d3155","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        # oldest_mutable_timestamp)"},{"line_number":227,"context_line":"        write_full \u003d (self.WRITE_FULL"},{"line_number":228,"context_line":"                      or key + datetime.timedelta("},{"line_number":229,"context_line":"                          seconds\u003darchive_policy_def.granularity)"},{"line_number":230,"context_line":"                      \u003c\u003d oldest_mutable_timestamp)"},{"line_number":231,"context_line":"        key_as_str \u003d carbonara.AggregatedTimeSerie.split_key_to_string(key)"},{"line_number":232,"context_line":"        if write_full:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_17ee558b","line":229,"range":{"start_line":229,"start_character":53,"end_line":229,"end_character":64},"in_reply_to":"fa7ab95a_11bbd673","updated":"2016-08-26 08:13:09.000000000","message":"Yes, this is wrong. It should be 3600 * granularity IIUC.","commit_id":"3eeb4e3a217c6abf46796d29c7d5e99ba634aad3"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"22aa37c146335715dccf0f79f5e2db135a1f604d","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self.WRITE_FULL"},{"line_number":228,"context_line":"            or (oldest_mutable_timestamp \u003e\u003d"},{"line_number":229,"context_line":"                carbonara.AggregatedTimeSerie.get_next_split_key_datetime("},{"line_number":230,"context_line":"                    split, archive_policy_def.granularity)))"},{"line_number":231,"context_line":"        key_as_str \u003d carbonara.AggregatedTimeSerie.split_key_to_string(key)"},{"line_number":232,"context_line":"        if write_full:"},{"line_number":233,"context_line":"            offset \u003d 0"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_f90394b6","line":230,"updated":"2016-08-26 12:54:42.000000000","message":"there\u0027s one scenario i think this fails at. i believe we are trying to write compressed file when we reach last point of split. in scenario where we have a backwindow of 2, and we only have points added to newer backwindow, then there will be a point where we never compress object because the oldest mutable is still in full object, but all our points are working only against new object.\n\nsimilarly, if we don\u0027t get a point for last point of split, we will never actually compress that obj.\n\nnot a blocker, but maybe something to add note about?","commit_id":"11d69bbdd3284f461021d4dac48e10c35c09b6e4"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"73a1aa9880954d931725e131be3208f4cc4c8219","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self.WRITE_FULL"},{"line_number":228,"context_line":"            or (oldest_mutable_timestamp \u003e\u003d"},{"line_number":229,"context_line":"                carbonara.AggregatedTimeSerie.get_next_split_key_datetime("},{"line_number":230,"context_line":"                    split, archive_policy_def.granularity)))"},{"line_number":231,"context_line":"        key_as_str \u003d carbonara.AggregatedTimeSerie.split_key_to_string(key)"},{"line_number":232,"context_line":"        if write_full:"},{"line_number":233,"context_line":"            offset \u003d 0"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_f2e2c602","line":230,"in_reply_to":"fa7ab95a_6a5a4085","updated":"2016-08-26 14:08:11.000000000","message":"Yeah, I just realize that indeed. This is because of L456-457 which can create a gap where we would not compress things, right?\n\nI need to think about it.","commit_id":"11d69bbdd3284f461021d4dac48e10c35c09b6e4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"290cf5bf215061da61ebdfb4e886b5f89748190a","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self.WRITE_FULL"},{"line_number":228,"context_line":"            or (oldest_mutable_timestamp \u003e\u003d"},{"line_number":229,"context_line":"                carbonara.AggregatedTimeSerie.get_next_split_key_datetime("},{"line_number":230,"context_line":"                    split, archive_policy_def.granularity)))"},{"line_number":231,"context_line":"        key_as_str \u003d carbonara.AggregatedTimeSerie.split_key_to_string(key)"},{"line_number":232,"context_line":"        if write_full:"},{"line_number":233,"context_line":"            offset \u003d 0"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_6a5a4085","line":230,"in_reply_to":"fa7ab95a_f90394b6","updated":"2016-08-26 13:37:23.000000000","message":"maybe we should add a compression task after we truncate? if we truncate and it\u0027s new time is in new split, then we go back and compress the previous split?","commit_id":"11d69bbdd3284f461021d4dac48e10c35c09b6e4"}],"gnocchi/storage/ceph.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"9cba5fb08fc6b45af6077041ae61e11051468a75","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            self.ioctx.write_full(name, data)"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            self.ioctx.write(name, data, offset\u003doffset)"},{"line_number":263,"context_line":"        self.ioctx.set_xattr(\"gnocchi_%s_container\" % metric.id, name, \"\")"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def _delete_metric_measures(self, metric, timestamp_key, aggregation,"},{"line_number":266,"context_line":"                                granularity, version\u003d3):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_80145da0","line":263,"updated":"2016-09-07 09:53:32.000000000","message":"We still don\u0027t truncate ?","commit_id":"d5794013653a8c520f8c97c30bd08632077254e2"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"caf3dfeef4e54e4d41d56905fda81c40ebe8f200","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            self.ioctx.write_full(name, data)"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            self.ioctx.write(name, data, offset\u003doffset)"},{"line_number":263,"context_line":"        self.ioctx.set_xattr(\"gnocchi_%s_container\" % metric.id, name, \"\")"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def _delete_metric_measures(self, metric, timestamp_key, aggregation,"},{"line_number":266,"context_line":"                                granularity, version\u003d3):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_c33f4f85","line":263,"in_reply_to":"9a89bdaa_80145da0","updated":"2016-09-07 10:04:25.000000000","message":"We use write_full() if offset is None, meaning it truncates.","commit_id":"d5794013653a8c520f8c97c30bd08632077254e2"}],"gnocchi/tests/storage/test_carbonara.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"9cba5fb08fc6b45af6077041ae61e11051468a75","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                f.side_effect \u003d _serialize_v2"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"                # NOTE(jd) This is just to have an unaggregated timserie for"},{"line_number":57,"context_line":"                # the upgrade code, I don\u0027t think the values are correct lol"},{"line_number":58,"context_line":"                ts \u003d carbonara.BoundTimeSerie("},{"line_number":59,"context_line":"                    block_size\u003dself.metric.archive_policy.max_block_size,"},{"line_number":60,"context_line":"                    back_window\u003dself.metric.archive_policy.back_window)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_0de08628","line":57,"updated":"2016-09-07 09:53:32.000000000","message":"Did you try to scare me ?","commit_id":"d5794013653a8c520f8c97c30bd08632077254e2"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"caf3dfeef4e54e4d41d56905fda81c40ebe8f200","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                f.side_effect \u003d _serialize_v2"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"                # NOTE(jd) This is just to have an unaggregated timserie for"},{"line_number":57,"context_line":"                # the upgrade code, I don\u0027t think the values are correct lol"},{"line_number":58,"context_line":"                ts \u003d carbonara.BoundTimeSerie("},{"line_number":59,"context_line":"                    block_size\u003dself.metric.archive_policy.max_block_size,"},{"line_number":60,"context_line":"                    back_window\u003dself.metric.archive_policy.back_window)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_436b3f85","line":57,"in_reply_to":"9a89bdaa_0de08628","updated":"2016-09-07 10:04:25.000000000","message":"/me whispers","commit_id":"d5794013653a8c520f8c97c30bd08632077254e2"}]}
