)]}'
{"gnocchi/cli.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"770203227fd710f19a760ac023297f25f714ee91","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            report \u003d self.store.measures_report(details\u003dFalse)"},{"line_number":110,"context_line":"            if self.queues:"},{"line_number":111,"context_line":"                partition_size \u003d len(report) // len(self.queues)"},{"line_number":112,"context_line":"                if partition_size \u003c 16:"},{"line_number":113,"context_line":"                    partition_size \u003d 16"},{"line_number":114,"context_line":"                elif partition_size \u003e 256:"},{"line_number":115,"context_line":"                    partition_size \u003d 256"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_6ac66749","line":112,"updated":"2016-02-16 16:27:53.000000000","message":"partition_size \u003d max(16, min(256, partition_size))\n\n:)","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"eb0f5c614e7b01e9e99d7c0743ab230f6f442ac1","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            report \u003d self.store.measures_report(details\u003dFalse)"},{"line_number":110,"context_line":"            if self.queues:"},{"line_number":111,"context_line":"                partition_size \u003d len(report) // len(self.queues)"},{"line_number":112,"context_line":"                if partition_size \u003c 16:"},{"line_number":113,"context_line":"                    partition_size \u003d 16"},{"line_number":114,"context_line":"                elif partition_size \u003e 256:"},{"line_number":115,"context_line":"                    partition_size \u003d 256"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_c19af962","line":112,"in_reply_to":"dae33548_6ac66749","updated":"2016-02-16 16:54:15.000000000","message":"i was hoping you\u0027d tell me how to do this in one line.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"770203227fd710f19a760ac023297f25f714ee91","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            if self.queue:"},{"line_number":136,"context_line":"                while not self.queue.empty():"},{"line_number":137,"context_line":"                    self.part_size \u003d self.queue.get()"},{"line_number":138,"context_line":"            self.store.partition_size \u003d self.part_size or 128"},{"line_number":139,"context_line":"            LOG.error(\u0027worker: %s, block_size: %s\u0027, self.store.partition,"},{"line_number":140,"context_line":"                      self.store.partition_size)"},{"line_number":141,"context_line":"            self.store.process_background_tasks(self.index)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_0af6bbd6","line":138,"updated":"2016-02-16 16:27:53.000000000","message":"Does not seems like part_size is ever None or 0.\n\nI would be more comfortable in passing it in process_background_tasks though.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"eb0f5c614e7b01e9e99d7c0743ab230f6f442ac1","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            if self.queue:"},{"line_number":136,"context_line":"                while not self.queue.empty():"},{"line_number":137,"context_line":"                    self.part_size \u003d self.queue.get()"},{"line_number":138,"context_line":"            self.store.partition_size \u003d self.part_size or 128"},{"line_number":139,"context_line":"            LOG.error(\u0027worker: %s, block_size: %s\u0027, self.store.partition,"},{"line_number":140,"context_line":"                      self.store.partition_size)"},{"line_number":141,"context_line":"            self.store.process_background_tasks(self.index)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_e1c61d48","line":138,"in_reply_to":"dae33548_0af6bbd6","updated":"2016-02-16 16:54:15.000000000","message":"sure. i\u0027ll try that.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"770203227fd710f19a760ac023297f25f714ee91","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    try:"},{"line_number":157,"context_line":"        queues \u003d []"},{"line_number":158,"context_line":"        for __ in range(conf.metricd.workers):"},{"line_number":159,"context_line":"            queues.append(multiprocessing.Queue())"},{"line_number":160,"context_line":"        metric_report \u003d MetricReporting("},{"line_number":161,"context_line":"            conf, 0, conf.storage.metric_reporting_delay, queues)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_caafb392","line":158,"updated":"2016-02-16 16:27:53.000000000","message":"You could avoid this iteration by adding the queue at line 166 and starting the report after the workers.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"eb0f5c614e7b01e9e99d7c0743ab230f6f442ac1","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    try:"},{"line_number":157,"context_line":"        queues \u003d []"},{"line_number":158,"context_line":"        for __ in range(conf.metricd.workers):"},{"line_number":159,"context_line":"            queues.append(multiprocessing.Queue())"},{"line_number":160,"context_line":"        metric_report \u003d MetricReporting("},{"line_number":161,"context_line":"            conf, 0, conf.storage.metric_reporting_delay, queues)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_81de310f","line":158,"in_reply_to":"dae33548_caafb392","updated":"2016-02-16 16:54:15.000000000","message":"sounds good.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"}],"gnocchi/storage/ceph.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"770203227fd710f19a760ac023297f25f714ee91","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            objs_it \u003d xattrs"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            objs_it \u003d itertools.islice("},{"line_number":129,"context_line":"                xattrs, self.partition_size * self.partition, None)"},{"line_number":130,"context_line":"            objs_it \u003d xattrs"},{"line_number":131,"context_line":"        for name, __ in objs_it:"},{"line_number":132,"context_line":"            metrics.add(name.split(\"_\")[1])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_aa618f3b","line":129,"range":{"start_line":129,"start_character":24,"end_line":129,"end_character":60},"updated":"2016-02-16 16:27:53.000000000","message":"I get the idea but this is not \"correct\", as this is completely optimistic on the fact that you have only one measure file per metric. Which is unlikely after all.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"eb0f5c614e7b01e9e99d7c0743ab230f6f442ac1","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            objs_it \u003d xattrs"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            objs_it \u003d itertools.islice("},{"line_number":129,"context_line":"                xattrs, self.partition_size * self.partition, None)"},{"line_number":130,"context_line":"            objs_it \u003d xattrs"},{"line_number":131,"context_line":"        for name, __ in objs_it:"},{"line_number":132,"context_line":"            metrics.add(name.split(\"_\")[1])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_c184b9d5","line":129,"range":{"start_line":129,"start_character":24,"end_line":129,"end_character":60},"in_reply_to":"dae33548_aa618f3b","updated":"2016-02-16 16:54:15.000000000","message":"yeah. i added this in commit message:\n\n\"overlap will occur the most in ceph driver because there is no way to grab metrics as a whole but it should still minimise the overlap to an extent.\"\n\ni don\u0027t really know how to handle this without making each worker talk to each other... ideas?","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"711c9054aec57ff40b0533f39956524ee5f7e553","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        else:"},{"line_number":126,"context_line":"            objs_it \u003d itertools.islice("},{"line_number":127,"context_line":"                xattrs, block_size * self.partition, None)"},{"line_number":128,"context_line":"            objs_it \u003d xattrs"},{"line_number":129,"context_line":"        for name, __ in objs_it:"},{"line_number":130,"context_line":"            metrics.add(name.split(\"_\")[1])"},{"line_number":131,"context_line":"            if full is False and len(metrics) \u003e\u003d block_size:"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_51cc8eba","line":128,"updated":"2016-02-18 10:18:08.000000000","message":"Why do we have objs_it overriden here ?","commit_id":"13da7f3b73880b60447bd8deccc6fb9da18ca455"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"87a5cd59b760165fbb0fcef1e852aac359190d43","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        else:"},{"line_number":126,"context_line":"            objs_it \u003d itertools.islice("},{"line_number":127,"context_line":"                xattrs, block_size * self.partition, None)"},{"line_number":128,"context_line":"            objs_it \u003d xattrs"},{"line_number":129,"context_line":"        for name, __ in objs_it:"},{"line_number":130,"context_line":"            metrics.add(name.split(\"_\")[1])"},{"line_number":131,"context_line":"            if full is False and len(metrics) \u003e\u003d block_size:"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_aa00f834","line":128,"in_reply_to":"dae33548_51cc8eba","updated":"2016-02-18 12:47:27.000000000","message":"... i have no words to why i let this happen every single patch. this does better explain nicodemus\u0027 logs","commit_id":"13da7f3b73880b60447bd8deccc6fb9da18ca455"}],"gnocchi/storage/file.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"770203227fd710f19a760ac023297f25f714ee91","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        if full:"},{"line_number":145,"context_line":"            return os.listdir(self.measure_path)"},{"line_number":146,"context_line":"        return os.listdir(self.measure_path)["},{"line_number":147,"context_line":"            self.partition_size * self.partition:"},{"line_number":148,"context_line":"            self.partition_size * (self.partition + 1)]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _list_measures_container_for_metric_id(self, metric_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_ca5e9375","line":147,"updated":"2016-02-16 16:27:53.000000000","message":"ditto","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"eb0f5c614e7b01e9e99d7c0743ab230f6f442ac1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        if full:"},{"line_number":145,"context_line":"            return os.listdir(self.measure_path)"},{"line_number":146,"context_line":"        return os.listdir(self.measure_path)["},{"line_number":147,"context_line":"            self.partition_size * self.partition:"},{"line_number":148,"context_line":"            self.partition_size * (self.partition + 1)]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _list_measures_container_for_metric_id(self, metric_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_214be5b1","line":147,"in_reply_to":"dae33548_ca5e9375","updated":"2016-02-16 16:54:15.000000000","message":"this should be fine i think unless i\u0027m missing soemthing. the measures are grouped in it\u0027s own metric folder and os.listdir should list out the metric directories only.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"}],"gnocchi/storage/swift.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"770203227fd710f19a760ac023297f25f714ee91","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        limit \u003d None"},{"line_number":126,"context_line":"        if not full:"},{"line_number":127,"context_line":"            limit \u003d self.partition_size * (self.partition + 1)"},{"line_number":128,"context_line":"        headers, files \u003d self.swift.get_container(self.MEASURE_PREFIX,"},{"line_number":129,"context_line":"                                                  delimiter\u003d\u0027/\u0027,"},{"line_number":130,"context_line":"                                                  full_listing\u003dfull,"},{"line_number":131,"context_line":"                                                  limit\u003dlimit)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_2add7fe0","line":128,"updated":"2016-02-16 16:27:53.000000000","message":"hm no way to list after a certain item? (did not check)","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"eb0f5c614e7b01e9e99d7c0743ab230f6f442ac1","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        limit \u003d None"},{"line_number":126,"context_line":"        if not full:"},{"line_number":127,"context_line":"            limit \u003d self.partition_size * (self.partition + 1)"},{"line_number":128,"context_line":"        headers, files \u003d self.swift.get_container(self.MEASURE_PREFIX,"},{"line_number":129,"context_line":"                                                  delimiter\u003d\u0027/\u0027,"},{"line_number":130,"context_line":"                                                  full_listing\u003dfull,"},{"line_number":131,"context_line":"                                                  limit\u003dlimit)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_61c04de1","line":128,"in_reply_to":"dae33548_2add7fe0","updated":"2016-02-16 16:54:15.000000000","message":"i checked in swift. they support markers rather than offset so i can\u0027t actually list stuff after a random item, i actually need to figure out what that marker item is explicitly... so this kinda sucks but not any more than current logic.","commit_id":"b2b41e7b02e6c277e34e3816a3ea3d48b612569a"}]}
