)]}'
{"gnocchi/cli.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bae83482a0944b6860f1ca4b8f519b03ed32fae8","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            LOG.info(\u0027New set of agents detected. Now working on block: %s\u0027,"},{"line_number":183,"context_line":"                     self.block)"},{"line_number":184,"context_line":"        except Exception:"},{"line_number":185,"context_line":"            LOG.warning(\u0027Error getting block to work on, default to first\u0027)"},{"line_number":186,"context_line":"            self.block \u003d 0"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    # Retry with exponential backoff for up to 1 minute"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_c5bb2474","line":185,"range":{"start_line":185,"start_character":57,"end_line":185,"end_character":64},"updated":"2016-07-25 09:19:26.000000000","message":"defaulting?","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0e50c7cc2bd2f35395caa6fab24cc8967eec6468","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            LOG.info(\u0027New set of agents detected. Now working on block: %s\u0027,"},{"line_number":183,"context_line":"                     self.block)"},{"line_number":184,"context_line":"        except Exception:"},{"line_number":185,"context_line":"            LOG.warning(\u0027Error getting block to work on, default to first\u0027)"},{"line_number":186,"context_line":"            self.block \u003d 0"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    # Retry with exponential backoff for up to 1 minute"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_0101a76a","line":185,"range":{"start_line":185,"start_character":57,"end_line":185,"end_character":64},"in_reply_to":"dada55a8_c5bb2474","updated":"2016-07-25 13:13:14.000000000","message":"Done","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bae83482a0944b6860f1ca4b8f519b03ed32fae8","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            LOG.info(\u0027Joined coordination group: %s\u0027, self.group_id)"},{"line_number":198,"context_line":"            self.set_block(None)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            @periodics.periodic(spacing\u003d30, run_immediately\u003dTrue)"},{"line_number":201,"context_line":"            def run_watchers():"},{"line_number":202,"context_line":"                self._coord.run_watchers()"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_e80b9d22","line":200,"range":{"start_line":200,"start_character":40,"end_line":200,"end_character":42},"updated":"2016-07-25 09:19:26.000000000","message":"use a class attribute?","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0e50c7cc2bd2f35395caa6fab24cc8967eec6468","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            LOG.info(\u0027Joined coordination group: %s\u0027, self.group_id)"},{"line_number":198,"context_line":"            self.set_block(None)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            @periodics.periodic(spacing\u003d30, run_immediately\u003dTrue)"},{"line_number":201,"context_line":"            def run_watchers():"},{"line_number":202,"context_line":"                self._coord.run_watchers()"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_a1209bf8","line":200,"range":{"start_line":200,"start_character":40,"end_line":200,"end_character":42},"in_reply_to":"dada55a8_e80b9d22","updated":"2016-07-25 13:13:14.000000000","message":"Done","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bae83482a0944b6860f1ca4b8f519b03ed32fae8","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                pass"},{"line_number":220,"context_line":"            raise Retry(e)"},{"line_number":221,"context_line":"        except tooz.NotImplemented:"},{"line_number":222,"context_line":"            LOG.warning(\u0027Current coordination driver does not support \u0027"},{"line_number":223,"context_line":"                        \u0027required functionality. Coordination is disabled.\u0027)"},{"line_number":224,"context_line":"        except Exception as e:"},{"line_number":225,"context_line":"            LOG.error(\u0027Failed to configure coordination. Coordination is \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_6553583a","line":222,"range":{"start_line":222,"start_character":25,"end_line":222,"end_character":32},"updated":"2016-07-25 09:19:26.000000000","message":"Configured?","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0e50c7cc2bd2f35395caa6fab24cc8967eec6468","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                pass"},{"line_number":220,"context_line":"            raise Retry(e)"},{"line_number":221,"context_line":"        except tooz.NotImplemented:"},{"line_number":222,"context_line":"            LOG.warning(\u0027Current coordination driver does not support \u0027"},{"line_number":223,"context_line":"                        \u0027required functionality. Coordination is disabled.\u0027)"},{"line_number":224,"context_line":"        except Exception as e:"},{"line_number":225,"context_line":"            LOG.error(\u0027Failed to configure coordination. Coordination is \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_e15f3373","line":222,"range":{"start_line":222,"start_character":25,"end_line":222,"end_character":32},"in_reply_to":"dada55a8_6553583a","updated":"2016-07-25 13:13:14.000000000","message":"Done","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bae83482a0944b6860f1ca4b8f519b03ed32fae8","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_a8288586","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"updated":"2016-07-25 09:19:26.000000000","message":"use a number linked to the number of member? just an idea","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"35b4b709fcd8771a90c750a2c51fd09d753088ea","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_edcc4163","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"in_reply_to":"dada55a8_77d665f2","updated":"2016-07-25 14:21:08.000000000","message":"i don\u0027t really have a reason for 500. it seemed like a ok number that wasn\u0027t too big and could still provide enough work for 20+ workers every 10s\n\nwhen you say small groups, do you mean agents with small number of workers? basically what 500 value is is the scheduler of each agent will grab ~500 metrics and the workers greedily grab from 500, metrics to process. the block is each agent will grab a specific group of 500, so agent0 grabs block0(0-499), agent1 grabs block1(500-999), etc... there is overlap as the agents are synchronised to query at same time.\n\ni can change it, it\u0027s just len(group members) * self.block * 4 won\u0027t work because self.block \u003d 0 (if 1 agent).","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"9cbfaa1ae5127b8893d3c5f88e708b1536051e06","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_e7ca9aa0","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"in_reply_to":"dada55a8_90379eaf","updated":"2016-07-25 15:53:56.000000000","message":"yeah, i have each worker in agent grabbing 4 metrics from the 500 each time. i don\u0027t have any good reason for 4 either, it just saves a bit of load on SQL rather than grabbing one metric at time. the 4 doesn\u0027t actually relate to the number of members but rather to number of workers.\n\ni dont think group_members * 4 would make sense since it might mean 20 workers working against 4 metrics only. unless we\u0027re suggesting the deployment strategy be more agents with less workers?","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"da22ec190709951de11162cf110581a63a3cd9b8","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_b60f35e0","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"in_reply_to":"dada55a8_a279b0fe","updated":"2016-07-25 16:35:35.000000000","message":"i don\u0027t really have a suggestion to be honest (my mind is stuck in same design thought). i\u0027m open to suggestions.\n\nthe block size should be the same across all agents so we shouldn\u0027t factor in workers.\n\nwe can maybe pull bigger blocks when less agents are around but that just means the interval between getting next set metrics to process needs to be increased.","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0e50c7cc2bd2f35395caa6fab24cc8967eec6468","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_bca3a2b0","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"in_reply_to":"dada55a8_a8288586","updated":"2016-07-25 13:13:14.000000000","message":"not quite sure what you want here? 500 is the limit of metrics. block is the grouping of 500 it should work with.","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"303b907d4267dc34121477bf62c57913785a440d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_77d665f2","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"in_reply_to":"dada55a8_bca3a2b0","updated":"2016-07-25 13:34:13.000000000","message":"why 500? why not (len(group members) * self.block * 4) for example.\n\nThis would allow small groups to only grab a few metrics ahead so they are pretty reactive, while large groups can allow to be more lazy and not check that often for new things to do.","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c5cd4edf6fe622a7076c1a49eb1720024e26a527","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_a279b0fe","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"in_reply_to":"dada55a8_e7ca9aa0","updated":"2016-07-25 16:21:50.000000000","message":"No you\u0027re right. Just find a \"good\" formula maybe :)","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f469e5d26d017c175b7c2ebcc3a14c05b6b6c66d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _run_job(self):"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            metrics \u003d self.store._list_metric_with_measures_to_process("},{"line_number":231,"context_line":"                500, self.block)"},{"line_number":232,"context_line":"            if not self.queue.empty():"},{"line_number":233,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":234,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_90379eaf","line":231,"range":{"start_line":231,"start_character":16,"end_line":231,"end_character":19},"in_reply_to":"dada55a8_edcc4163","updated":"2016-07-25 14:30:33.000000000","message":"By small groups I meant \"tooz group with a small amount of members\", so yeah, a small number of agents. I\u0027ve the feeling it\u0027s good to grab an amount of work that is relative to the amount of agents you have.\n\nYeah actually self.block should not be in the formula, sorry, my bad. So (len(group_members) * 4) where I guess 4 should also be a variable ( I think I saw it hardcoded in the previous patch as block size or something)","commit_id":"dc34397e85507c3143141eef4bd25905f3d76a12"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"732d61b12a7fdce53bc39e25fd0ff30580686f33","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self._enable_coordination(conf)"},{"line_number":173,"context_line":"        self.queue \u003d queue"},{"line_number":174,"context_line":"        self.previously_scheduled_metrics \u003d set()"},{"line_number":175,"context_line":"        self.block \u003d 0"},{"line_number":176,"context_line":"        self.periodic \u003d None"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def set_block(self, event):"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_f024e80d","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":18},"updated":"2016-07-26 10:41:34.000000000","message":"self.block_index","commit_id":"a295777c93af8405c329b6065b25928a209e8a1d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"732d61b12a7fdce53bc39e25fd0ff30580686f33","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        get_members_req \u003d self._coord.get_members(self.group_id)"},{"line_number":180,"context_line":"        try:"},{"line_number":181,"context_line":"            members \u003d sorted(get_members_req.get())"},{"line_number":182,"context_line":"            self.block \u003d members.index(self._my_id)"},{"line_number":183,"context_line":"            LOG.info(\u0027New set of agents detected. Now working on block: %s\u0027,"},{"line_number":184,"context_line":"                     self.block)"},{"line_number":185,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_50d97421","line":182,"updated":"2016-07-26 10:41:34.000000000","message":"self.block_index \u003d members.index(self._my_id)\nself.block_size \u003d len(members) * self.BLOCK_SIZE_RATIO_PER_MEMBER\n\nBLOCK_SIZE_RATIO_PER_MEMBER \u003d 16 (class variable)\n\n----\n\n\nSo if there\u0027s only 2 members, we want to be agile (^^) and only go with 32 metrics per agent so we don\u0027t have too much latency. If you have 20 agents, we can grab 320 metrics at a time, we don\u0027t care much about latencies… because well, 20 workers, there\u0027s surely one that\u0027ll be at \"queue empty stage\" :)\n\nNote that there might a small issue: if you have 2 members and only grab 32 metrics and your agents have 64 CPU each, they\u0027ll get bored too fast. cf my previous comments","commit_id":"a295777c93af8405c329b6065b25928a209e8a1d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"7750a957499ddc03e439f060be6b5123ef548abb","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        get_members_req \u003d self._coord.get_members(self.group_id)"},{"line_number":180,"context_line":"        try:"},{"line_number":181,"context_line":"            members \u003d sorted(get_members_req.get())"},{"line_number":182,"context_line":"            self.block \u003d members.index(self._my_id)"},{"line_number":183,"context_line":"            LOG.info(\u0027New set of agents detected. Now working on block: %s\u0027,"},{"line_number":184,"context_line":"                     self.block)"},{"line_number":185,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_69c64a69","line":182,"in_reply_to":"dada55a8_50d97421","updated":"2016-07-26 12:40:33.000000000","message":"if we have 2 agents, each with 1 worker, 32 metrics should be able to to be finished in 10-20s. but if we have 2 agents, each with 20 workers, in theory, it should finish within a few seconds meaning we need to poll faster to meet demand?\n\ni\u0027m worried having this size dynamic will make things a bit more difficult to configure. ie if you add an agent, you may now need to increase gathering intervals since it takes longer to process previous set?","commit_id":"a295777c93af8405c329b6065b25928a209e8a1d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"da30c2de0edc40fb77673c2275af6314a3c8108d","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        get_members_req \u003d self._coord.get_members(self.group_id)"},{"line_number":180,"context_line":"        try:"},{"line_number":181,"context_line":"            members \u003d sorted(get_members_req.get())"},{"line_number":182,"context_line":"            self.block \u003d members.index(self._my_id)"},{"line_number":183,"context_line":"            LOG.info(\u0027New set of agents detected. Now working on block: %s\u0027,"},{"line_number":184,"context_line":"                     self.block)"},{"line_number":185,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_356b0420","line":182,"in_reply_to":"dada55a8_69c64a69","updated":"2016-07-26 13:58:09.000000000","message":"yeah, but the problem already exists with 500. If you have 2 agents with 500 workers (500 CPU), i\u0027ll finish in a few seconds…\n\nSo… turns out the block size should be tied to something like the number of CPU/workers of the biggest agent? Might be possible since tooz offer capabilities storage. WDYT?","commit_id":"a295777c93af8405c329b6065b25928a209e8a1d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"732d61b12a7fdce53bc39e25fd0ff30580686f33","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            # TODO(gordc): add support to detect other agents to enable"},{"line_number":232,"context_line":"            #              partitioning"},{"line_number":233,"context_line":"            metrics \u003d self.store.list_metric_with_measures_to_process("},{"line_number":234,"context_line":"                500, self.block)"},{"line_number":235,"context_line":"            if metrics and not self.queue.empty():"},{"line_number":236,"context_line":"                # NOTE(gordc): drop metrics we previously process to avoid"},{"line_number":237,"context_line":"                #              handling twice"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_1041bca9","line":234,"range":{"start_line":234,"start_character":16,"end_line":234,"end_character":31},"updated":"2016-07-26 10:41:34.000000000","message":"self.block_size, self.block_index","commit_id":"a295777c93af8405c329b6065b25928a209e8a1d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"732d61b12a7fdce53bc39e25fd0ff30580686f33","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                #              handling twice"},{"line_number":238,"context_line":"                number_of_scheduled_metrics \u003d len(metrics)"},{"line_number":239,"context_line":"                metrics \u003d metrics - self.previously_scheduled_metrics"},{"line_number":240,"context_line":"                if (number_of_scheduled_metrics - len(metrics)) / 500.0 \u003e 0.3:"},{"line_number":241,"context_line":"                    LOG.warning(\u0027Metric processing lagging scheduling rate. \u0027"},{"line_number":242,"context_line":"                                \u0027It is recommended to increase the number of \u0027"},{"line_number":243,"context_line":"                                \u0027workers or to lengthen processing interval.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_5047b4bb","line":240,"range":{"start_line":240,"start_character":66,"end_line":240,"end_character":69},"updated":"2016-07-26 10:41:34.000000000","message":"self.block_size","commit_id":"a295777c93af8405c329b6065b25928a209e8a1d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"8a44bf7634466a45ac3073e44d661468d6d1c1ce","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        try:"},{"line_number":187,"context_line":"            members \u003d sorted(get_members_req.get())"},{"line_number":188,"context_line":"            self.block_index \u003d members.index(self._my_id)"},{"line_number":189,"context_line":"            for i in members:"},{"line_number":190,"context_line":"                cap_req \u003d self._coord.get_member_capabilities(self.GROUP_ID, i)"},{"line_number":191,"context_line":"                cap \u003d msgpack.loads(cap_req.get(), encoding\u003d\u0027utf-8\u0027)"},{"line_number":192,"context_line":"                max_workers \u003d max(cap[\u0027workers\u0027], self.workers)"},{"line_number":193,"context_line":"            self.block_size \u003d max_workers * self.TASKS_PER_WORKER"},{"line_number":194,"context_line":"            LOG.info(\u0027New set of agents detected. Now working on block: %s, \u0027"},{"line_number":195,"context_line":"                     \u0027with up to %s metrics\u0027, self.block_index,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_71e52aa7","line":192,"range":{"start_line":189,"start_character":0,"end_line":192,"end_character":63},"updated":"2016-07-27 14:52:16.000000000","message":"reqs \u003d list(self._coord.get_member_capabilities(self.GROUP_ID, m) for m in members)\nfor req in reqs:\n    cap \u003d msgpack.loads(cap_req.get(), encoding\u003d\u0027utf-8\u0027)\n    max_workers \u003d max(cap[\u0027workers\u0027], self.workers)\n\n#protip\n\nThis makes maximum efficiency of asynchronous nature of the tooz API!","commit_id":"79e4f897ed9fe16b8005b13d6c083765a7853a32"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"332535b2f6664c1ce1f4a764f116e2e9a7d08123","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        try:"},{"line_number":187,"context_line":"            members \u003d sorted(get_members_req.get())"},{"line_number":188,"context_line":"            self.block_index \u003d members.index(self._my_id)"},{"line_number":189,"context_line":"            for i in members:"},{"line_number":190,"context_line":"                cap_req \u003d self._coord.get_member_capabilities(self.GROUP_ID, i)"},{"line_number":191,"context_line":"                cap \u003d msgpack.loads(cap_req.get(), encoding\u003d\u0027utf-8\u0027)"},{"line_number":192,"context_line":"                max_workers \u003d max(cap[\u0027workers\u0027], self.workers)"},{"line_number":193,"context_line":"            self.block_size \u003d max_workers * self.TASKS_PER_WORKER"},{"line_number":194,"context_line":"            LOG.info(\u0027New set of agents detected. Now working on block: %s, \u0027"},{"line_number":195,"context_line":"                     \u0027with up to %s metrics\u0027, self.block_index,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_74e4ed3a","line":192,"range":{"start_line":189,"start_character":0,"end_line":192,"end_character":63},"in_reply_to":"bacf61ea_71e52aa7","updated":"2016-07-27 18:23:57.000000000","message":"will do!","commit_id":"79e4f897ed9fe16b8005b13d6c083765a7853a32"}]}
