)]}'
{"agent.yaml.template":[{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"bcc0f72e1eb030e17d7978058034ed8a1f47c623","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  # Maximum number of messages to buffer when unable to communicate with the monasca-api"},{"line_number":46,"context_line":"  max_buffer_size: 1000"},{"line_number":47,"context_line":"  # Maximum number of measurements to buffer when unable to communicate with the monasca-api"},{"line_number":48,"context_line":"  max_measurement_buffer_size: {args.max_measurement_buffer_size}"},{"line_number":49,"context_line":"  # Maximum number of messages to send at one time when communication with the monasca-api is restored"},{"line_number":50,"context_line":"  backlog_send_rate: 1000"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9a89bdaa_b9257c5d","line":47,"range":{"start_line":47,"start_character":81,"end_line":47,"end_character":88},"updated":"2016-09-09 17:01:55.000000000","message":"do we also batch if we can not communicate with keystone?","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"07eb4dc08ee424ed31587e6a267976f09110d164","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  # Maximum number of messages to buffer when unable to communicate with the monasca-api"},{"line_number":46,"context_line":"  max_buffer_size: 1000"},{"line_number":47,"context_line":"  # Maximum number of measurements to buffer when unable to communicate with the monasca-api"},{"line_number":48,"context_line":"  max_measurement_buffer_size: {args.max_measurement_buffer_size}"},{"line_number":49,"context_line":"  # Maximum number of messages to send at one time when communication with the monasca-api is restored"},{"line_number":50,"context_line":"  backlog_send_rate: 1000"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9a89bdaa_f9a2a499","line":47,"range":{"start_line":47,"start_character":81,"end_line":47,"end_character":88},"in_reply_to":"9a89bdaa_b9257c5d","updated":"2016-09-09 17:05:41.000000000","message":"I think that falls under being unable to communicate with the monasca-api","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"}],"monasca_agent/common/config.py":[{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"2ccd8f60052ac9079775c7d2863b3c4d97301226","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import logging"},{"line_number":4,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_3fe87110","line":1,"range":{"start_line":1,"start_character":65,"end_line":1,"end_character":72},"updated":"2016-09-14 13:45:38.000000000","message":"take out","commit_id":"2b3ec413a43be1ba3a8a050a28457671e69494b6"}],"monasca_agent/forwarder/api/monasca_api.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"81188b2b124dce9ef13033eacfd319bb8099be83","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _queue_message(self, msg, reason):"},{"line_number":151,"context_line":"        self.message_queue.append(msg)"},{"line_number":152,"context_line":"        if self.max_measurement_buffer_size \u003e -1:"},{"line_number":153,"context_line":"            number_measurements \u003d 0"},{"line_number":154,"context_line":"            for item in self.message_queue:"},{"line_number":155,"context_line":"                for value in item.values():"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_992fd8f5","line":152,"range":{"start_line":152,"start_character":46,"end_line":152,"end_character":49},"updated":"2016-09-09 17:08:29.000000000","message":"If it is 0, we probably shouldn\u0027t even do the append above","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"cecdf23b78452a018dc24ca025c1bfe599af82a7","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _queue_message(self, msg, reason):"},{"line_number":151,"context_line":"        self.message_queue.append(msg)"},{"line_number":152,"context_line":"        if self.max_measurement_buffer_size \u003e -1:"},{"line_number":153,"context_line":"            number_measurements \u003d 0"},{"line_number":154,"context_line":"            for item in self.message_queue:"},{"line_number":155,"context_line":"                for value in item.values():"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_acf29c04","line":152,"range":{"start_line":152,"start_character":46,"end_line":152,"end_character":49},"in_reply_to":"9a89bdaa_992fd8f5","updated":"2016-09-09 19:16:47.000000000","message":"Good point, may as well save the time and effort and skip the whole method in that case.","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"bcc0f72e1eb030e17d7978058034ed8a1f47c623","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                for value in item.values():"},{"line_number":156,"context_line":"                    number_measurements +\u003d len(value)"},{"line_number":157,"context_line":"            while number_measurements \u003e self.max_measurement_buffer_size:"},{"line_number":158,"context_line":"                log.debug(\"Queue too large, removing oldest batch\")"},{"line_number":159,"context_line":"                removed_batch \u003d self.message_queue.popleft()"},{"line_number":160,"context_line":"                number_measurements -\u003d len(removed_batch.values()[0])"},{"line_number":161,"context_line":"                log.debug(\"Current measurements in queue: {0} of {1}\".format("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_196f4893","line":158,"range":{"start_line":158,"start_character":20,"end_line":158,"end_character":25},"updated":"2016-09-09 17:01:55.000000000","message":"i wonder if we do this at level info","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"07eb4dc08ee424ed31587e6a267976f09110d164","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                for value in item.values():"},{"line_number":156,"context_line":"                    number_measurements +\u003d len(value)"},{"line_number":157,"context_line":"            while number_measurements \u003e self.max_measurement_buffer_size:"},{"line_number":158,"context_line":"                log.debug(\"Queue too large, removing oldest batch\")"},{"line_number":159,"context_line":"                removed_batch \u003d self.message_queue.popleft()"},{"line_number":160,"context_line":"                number_measurements -\u003d len(removed_batch.values()[0])"},{"line_number":161,"context_line":"                log.debug(\"Current measurements in queue: {0} of {1}\".format("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_d9eb20af","line":158,"range":{"start_line":158,"start_character":20,"end_line":158,"end_character":25},"in_reply_to":"9a89bdaa_196f4893","updated":"2016-09-09 17:05:41.000000000","message":"I thought about that too, but it will print every run after the queue fills up. I could still see doing info though","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"81188b2b124dce9ef13033eacfd319bb8099be83","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                for value in item.values():"},{"line_number":156,"context_line":"                    number_measurements +\u003d len(value)"},{"line_number":157,"context_line":"            while number_measurements \u003e self.max_measurement_buffer_size:"},{"line_number":158,"context_line":"                log.debug(\"Queue too large, removing oldest batch\")"},{"line_number":159,"context_line":"                removed_batch \u003d self.message_queue.popleft()"},{"line_number":160,"context_line":"                number_measurements -\u003d len(removed_batch.values()[0])"},{"line_number":161,"context_line":"                log.debug(\"Current measurements in queue: {0} of {1}\".format("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_19c74846","line":158,"range":{"start_line":158,"start_character":20,"end_line":158,"end_character":25},"in_reply_to":"9a89bdaa_196f4893","updated":"2016-09-09 17:08:29.000000000","message":"Maybe even warn. This is an exceptional condition the user needs to know about","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"cecdf23b78452a018dc24ca025c1bfe599af82a7","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                for value in item.values():"},{"line_number":156,"context_line":"                    number_measurements +\u003d len(value)"},{"line_number":157,"context_line":"            while number_measurements \u003e self.max_measurement_buffer_size:"},{"line_number":158,"context_line":"                log.debug(\"Queue too large, removing oldest batch\")"},{"line_number":159,"context_line":"                removed_batch \u003d self.message_queue.popleft()"},{"line_number":160,"context_line":"                number_measurements -\u003d len(removed_batch.values()[0])"},{"line_number":161,"context_line":"                log.debug(\"Current measurements in queue: {0} of {1}\".format("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_ec3904da","line":158,"range":{"start_line":158,"start_character":20,"end_line":158,"end_character":25},"in_reply_to":"9a89bdaa_19c74846","updated":"2016-09-09 19:16:47.000000000","message":"Alright, that works for me, will change.","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"81188b2b124dce9ef13033eacfd319bb8099be83","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            log.warn(\"{0}. Queuing the messages to send later...\".format(reason))"},{"line_number":168,"context_line":"            log.info(\"Current agent queue size: {0} of {1}.\".format(len(self.message_queue),"},{"line_number":169,"context_line":"                                                                    self.max_buffer_size))"},{"line_number":170,"context_line":"            if self.max_measurement_buffer_size \u003e -1:"},{"line_number":171,"context_line":"                log.info(\"Current measurements in queue: {0} of {1}\".format("},{"line_number":172,"context_line":"                    number_measurements, self.max_measurement_buffer_size))"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_196ae81a","line":170,"range":{"start_line":170,"start_character":0,"end_line":170,"end_character":53},"updated":"2016-09-09 17:08:29.000000000","message":"Should we output this every time not just when a max is set?","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"cecdf23b78452a018dc24ca025c1bfe599af82a7","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            log.warn(\"{0}. Queuing the messages to send later...\".format(reason))"},{"line_number":168,"context_line":"            log.info(\"Current agent queue size: {0} of {1}.\".format(len(self.message_queue),"},{"line_number":169,"context_line":"                                                                    self.max_buffer_size))"},{"line_number":170,"context_line":"            if self.max_measurement_buffer_size \u003e -1:"},{"line_number":171,"context_line":"                log.info(\"Current measurements in queue: {0} of {1}\".format("},{"line_number":172,"context_line":"                    number_measurements, self.max_measurement_buffer_size))"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_994ef894","line":170,"range":{"start_line":170,"start_character":0,"end_line":170,"end_character":53},"in_reply_to":"9a89bdaa_196ae81a","updated":"2016-09-09 19:16:47.000000000","message":"I can see that being useful, I will change it.","commit_id":"ace037d9d916f025d0b1c37b3c61236b00a0c0b6"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"f79b866379ac491e3c3f2e2fcb3387929c00534a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                self.max_buffer_size \u003d -1"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.backlog_send_rate \u003d int(config[\u0027backlog_send_rate\u0027])"},{"line_number":48,"context_line":"        if config[\u0027max_buffer_size\u0027] \u003e -1:"},{"line_number":49,"context_line":"            self.message_queue \u003d collections.deque(maxlen\u003dself.max_buffer_size)"},{"line_number":50,"context_line":"        else:"},{"line_number":51,"context_line":"            self.message_queue \u003d collections.deque()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_febebdac","line":48,"range":{"start_line":48,"start_character":38,"end_line":48,"end_character":39},"updated":"2016-09-12 15:35:08.000000000","message":"do we want to set this if it is deprecated?","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"9194afb683ca74ff9ea7c9b572fd2166a6731bff","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                self.max_buffer_size \u003d -1"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.backlog_send_rate \u003d int(config[\u0027backlog_send_rate\u0027])"},{"line_number":48,"context_line":"        if config[\u0027max_buffer_size\u0027] \u003e -1:"},{"line_number":49,"context_line":"            self.message_queue \u003d collections.deque(maxlen\u003dself.max_buffer_size)"},{"line_number":50,"context_line":"        else:"},{"line_number":51,"context_line":"            self.message_queue \u003d collections.deque()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_424ee76f","line":48,"range":{"start_line":48,"start_character":38,"end_line":48,"end_character":39},"in_reply_to":"9a89bdaa_1bb44e33","updated":"2016-09-12 18:02:39.000000000","message":"+1\n\nRyan, I think Michael is setting max_buffer_size from max_measurement_buffer_size above, so kind of new configuration file is used, isnt\u0027t ?","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"2af3c136dbd6bab52db0486bd9d9f7a08926a64b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                self.max_buffer_size \u003d -1"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.backlog_send_rate \u003d int(config[\u0027backlog_send_rate\u0027])"},{"line_number":48,"context_line":"        if config[\u0027max_buffer_size\u0027] \u003e -1:"},{"line_number":49,"context_line":"            self.message_queue \u003d collections.deque(maxlen\u003dself.max_buffer_size)"},{"line_number":50,"context_line":"        else:"},{"line_number":51,"context_line":"            self.message_queue \u003d collections.deque()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_4238a7a0","line":48,"range":{"start_line":48,"start_character":38,"end_line":48,"end_character":39},"in_reply_to":"9a89bdaa_1bb44e33","updated":"2016-09-12 18:07:27.000000000","message":"Ryan fine with me","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"7e451386d0a0087a8a4e59847b2ea6c8ea211b78","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                self.max_buffer_size \u003d -1"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.backlog_send_rate \u003d int(config[\u0027backlog_send_rate\u0027])"},{"line_number":48,"context_line":"        if config[\u0027max_buffer_size\u0027] \u003e -1:"},{"line_number":49,"context_line":"            self.message_queue \u003d collections.deque(maxlen\u003dself.max_buffer_size)"},{"line_number":50,"context_line":"        else:"},{"line_number":51,"context_line":"            self.message_queue \u003d collections.deque()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_1bb44e33","line":48,"range":{"start_line":48,"start_character":38,"end_line":48,"end_character":39},"in_reply_to":"9a89bdaa_febebdac","updated":"2016-09-12 16:22:34.000000000","message":"I\u0027m not sure what you mean exactly, but someone upgrading the agent is likely to only have this set. I don\u0027t think we should ignore the old setting immediately.","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"f79b866379ac491e3c3f2e2fcb3387929c00534a","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                for value in removed_batch.values():"},{"line_number":178,"context_line":"                    num_discarded +\u003d len(value)"},{"line_number":179,"context_line":"                number_measurements -\u003d num_discarded"},{"line_number":180,"context_line":"                log.warn(\"Queue too large, discarding oldest batch: {} measurements discarded\".format("},{"line_number":181,"context_line":"                    num_discarded))"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        if self._log_interval_remaining \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_fe431dad","line":180,"range":{"start_line":180,"start_character":68,"end_line":180,"end_character":70},"updated":"2016-09-12 15:35:08.000000000","message":"{0}","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"a543ee9771dd6510d568b1c66aa27be6167d34a9","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                for value in removed_batch.values():"},{"line_number":178,"context_line":"                    num_discarded +\u003d len(value)"},{"line_number":179,"context_line":"                number_measurements -\u003d num_discarded"},{"line_number":180,"context_line":"                log.warn(\"Queue too large, discarding oldest batch: {} measurements discarded\".format("},{"line_number":181,"context_line":"                    num_discarded))"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        if self._log_interval_remaining \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_4a2fd987","line":180,"range":{"start_line":180,"start_character":68,"end_line":180,"end_character":70},"in_reply_to":"9a89bdaa_fe431dad","updated":"2016-09-12 19:59:43.000000000","message":"This should work fine for python 2.7 and above","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"40ee9a215e5155a2a4d00cec7a61b67c73af5f59","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            log.info(\"Current measurements in queue: {0} of {1}\".format("},{"line_number":188,"context_line":"                number_measurements, self.max_measurement_buffer_size))"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            log.info(\"A message will be logged for every {0} messages queued.\".format(MonascaAPI.LOG_INTERVAL))"},{"line_number":191,"context_line":"            self._log_interval_remaining \u003d MonascaAPI.LOG_INTERVAL"},{"line_number":192,"context_line":"        else:"},{"line_number":193,"context_line":"            self._log_interval_remaining -\u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_c2cbd751","line":190,"range":{"start_line":190,"start_character":61,"end_line":190,"end_character":69},"updated":"2016-09-12 18:16:07.000000000","message":"Is this messages or batches of messages?","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"32278c155edd9c6ab30294a135756e0faf715109","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            log.info(\"Current measurements in queue: {0} of {1}\".format("},{"line_number":188,"context_line":"                number_measurements, self.max_measurement_buffer_size))"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            log.info(\"A message will be logged for every {0} messages queued.\".format(MonascaAPI.LOG_INTERVAL))"},{"line_number":191,"context_line":"            self._log_interval_remaining \u003d MonascaAPI.LOG_INTERVAL"},{"line_number":192,"context_line":"        else:"},{"line_number":193,"context_line":"            self._log_interval_remaining -\u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_02569f29","line":190,"range":{"start_line":190,"start_character":61,"end_line":190,"end_character":69},"in_reply_to":"9a89bdaa_c2cbd751","updated":"2016-09-12 18:20:43.000000000","message":"The terminology seems to be that a message is a batch of metrics, so the queue holds messages.","commit_id":"f597160a18f5634a6282a8071200d06b046d161f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"5d89ef829d14ccd10908d37a89f1fd2d19e90aba","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import collections"},{"line_number":4,"context_line":"import copy"},{"line_number":5,"context_line":"import json"},{"line_number":6,"context_line":"import logging"},{"line_number":7,"context_line":"import random"},{"line_number":8,"context_line":"import time"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_6dbe0101","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":6},"updated":"2016-09-13 19:20:11.000000000","message":"Would you want to consider ujson? Based on the cpu utilization, I don\u0027t think it is necessary, but thought I would bring it up here anyway.","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"322bdf0d49cf6713c5ce47532706f419a11652e3","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import collections"},{"line_number":4,"context_line":"import copy"},{"line_number":5,"context_line":"import json"},{"line_number":6,"context_line":"import logging"},{"line_number":7,"context_line":"import random"},{"line_number":8,"context_line":"import time"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_981d4dc0","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":6},"in_reply_to":"7a8ec9b2_6dbe0101","updated":"2016-09-13 21:20:32.000000000","message":"Because of the minimal gain in this specific scenario, I think we should make that a separate change and cover the whole agent at once.","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"5d89ef829d14ccd10908d37a89f1fd2d19e90aba","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        if self.max_buffer_size \u003e -1:"},{"line_number":51,"context_line":"            self.message_queue \u003d collections.deque(maxlen\u003dself.max_buffer_size)"},{"line_number":52,"context_line":"        else:"},{"line_number":53,"context_line":"            self.message_queue \u003d collections.deque()"},{"line_number":54,"context_line":"        self.write_timeout \u003d int(config[\u0027write_timeout\u0027])"},{"line_number":55,"context_line":"        # \u0027amplifier\u0027 is completely optional and may not exist in the config"},{"line_number":56,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_f87bb179","line":53,"updated":"2016-09-13 19:20:11.000000000","message":"For what it\u0027s worth, I think it might have been good to create your own helper class in this module, that either inherits from dequeu or has a public interface similar to dequeue, but delegates to dequeue, that has public methods to push/pop as appropriate, that encapsulates all the little blocks of code interspersed throughout this code. The code would have been easier to read and more testable.","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"322bdf0d49cf6713c5ce47532706f419a11652e3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        if self.max_buffer_size \u003e -1:"},{"line_number":51,"context_line":"            self.message_queue \u003d collections.deque(maxlen\u003dself.max_buffer_size)"},{"line_number":52,"context_line":"        else:"},{"line_number":53,"context_line":"            self.message_queue \u003d collections.deque()"},{"line_number":54,"context_line":"        self.write_timeout \u003d int(config[\u0027write_timeout\u0027])"},{"line_number":55,"context_line":"        # \u0027amplifier\u0027 is completely optional and may not exist in the config"},{"line_number":56,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_fea47609","line":53,"in_reply_to":"7a8ec9b2_f87bb179","updated":"2016-09-13 21:20:32.000000000","message":"Rather than adding that class I think it might be more worthwhile to examine the data structure we are storing here. In future I think it would be better to shift to storing measurements instead of batches, which removes the need for the extra layer on top, i think.","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"5d89ef829d14ccd10908d37a89f1fd2d19e90aba","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                messages_sent \u003d 0"},{"line_number":82,"context_line":"                for index in range(0, len(self.message_queue)):"},{"line_number":83,"context_line":"                    if index \u003c self.backlog_send_rate:"},{"line_number":84,"context_line":"                        msg \u003d json.loads(self.message_queue.pop())"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"                        if self._send_message(**msg):"},{"line_number":87,"context_line":"                            messages_sent +\u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_0de2dd03","line":84,"updated":"2016-09-13 19:20:11.000000000","message":"I\u0027m guessing this isn\u0027t worth checking for, as you should have a Python dict at this point, but would a try/except block around this conversion be useful?","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"322bdf0d49cf6713c5ce47532706f419a11652e3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                messages_sent \u003d 0"},{"line_number":82,"context_line":"                for index in range(0, len(self.message_queue)):"},{"line_number":83,"context_line":"                    if index \u003c self.backlog_send_rate:"},{"line_number":84,"context_line":"                        msg \u003d json.loads(self.message_queue.pop())"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"                        if self._send_message(**msg):"},{"line_number":87,"context_line":"                            messages_sent +\u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_bb304009","line":84,"in_reply_to":"7a8ec9b2_0de2dd03","updated":"2016-09-13 21:20:32.000000000","message":"I think the only issue we could have at this point would be caught below trying to add the message to the queue.","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"5d89ef829d14ccd10908d37a89f1fd2d19e90aba","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if self.max_buffer_size \u003d\u003d 0 or self.max_measurement_buffer_size \u003d\u003d 0:"},{"line_number":170,"context_line":"            return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.message_queue.append(json.dumps(msg))"},{"line_number":173,"context_line":"        for value in msg.values():"},{"line_number":174,"context_line":"            self._current_number_measurements +\u003d len(value)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_4dcb0573","line":172,"updated":"2016-09-13 19:20:11.000000000","message":"Same point on try/except block being potentially interesting.\n\nWhat about encodings to worry about? utf8?","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"322bdf0d49cf6713c5ce47532706f419a11652e3","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if self.max_buffer_size \u003d\u003d 0 or self.max_measurement_buffer_size \u003d\u003d 0:"},{"line_number":170,"context_line":"            return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.message_queue.append(json.dumps(msg))"},{"line_number":173,"context_line":"        for value in msg.values():"},{"line_number":174,"context_line":"            self._current_number_measurements +\u003d len(value)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_bb3680b2","line":172,"in_reply_to":"7a8ec9b2_4dcb0573","updated":"2016-09-13 21:20:32.000000000","message":"Because we are handling both the encoding and decoding, I don\u0027t see a lot of value to adding specific error handling here. Any error here can rise into the standard handling (which might just mean restarting the process) to clear out the bad state/data.","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"5d89ef829d14ccd10908d37a89f1fd2d19e90aba","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                    num_discarded +\u003d len(value)"},{"line_number":182,"context_line":"                self._current_number_measurements -\u003d num_discarded"},{"line_number":183,"context_line":"                log.warn(\"Queue too large, discarding oldest batch: {0} measurements discarded\".format("},{"line_number":184,"context_line":"                    num_discarded))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        if self._log_interval_remaining \u003c\u003d 1:"},{"line_number":187,"context_line":"            log.warn(\"{0}. Queuing the messages to send later...\".format(reason))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_cdcb951d","line":184,"updated":"2016-09-13 19:20:11.000000000","message":"It might be good to use a method, _remove_from_queue,  here so it is clearer what this block of code is doing, which is just removing messages from the queue.","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"322bdf0d49cf6713c5ce47532706f419a11652e3","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                    num_discarded +\u003d len(value)"},{"line_number":182,"context_line":"                self._current_number_measurements -\u003d num_discarded"},{"line_number":183,"context_line":"                log.warn(\"Queue too large, discarding oldest batch: {0} measurements discarded\".format("},{"line_number":184,"context_line":"                    num_discarded))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        if self._log_interval_remaining \u003c\u003d 1:"},{"line_number":187,"context_line":"            log.warn(\"{0}. Queuing the messages to send later...\".format(reason))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_1b469423","line":184,"in_reply_to":"7a8ec9b2_cdcb951d","updated":"2016-09-13 21:20:32.000000000","message":"Done","commit_id":"834ff10ed05caf0a86f3f840740a5854d02aab70"}],"monasca_setup/main.py":[{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"2ccd8f60052ac9079775c7d2863b3c4d97301226","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"\"\"\" Detect running daemons then configure and start the agent."},{"line_number":5,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_bfcac19f","line":2,"range":{"start_line":2,"start_character":65,"end_line":2,"end_character":72},"updated":"2016-09-14 13:45:38.000000000","message":"take out","commit_id":"2b3ec413a43be1ba3a8a050a28457671e69494b6"}]}
