)]}'
{"ceilometer/collector/service.py":[{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"f36be7b32fa5897808474129269ef7130bf7396b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    LOG.exception(_(\"UDP: Unable to store meter\"))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def stop_udp(self):"},{"line_number":83,"context_line":"        self.udp_run \u003d False"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def initialize_service_hook(self, service):"},{"line_number":86,"context_line":"        \u0027\u0027\u0027Consumers must be declared before consume_thread start.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B9Xo%3D","line":83,"updated":"2013-11-18 03:56:18.000000000","message":"I think stop_udp is not called .\nThis method would be called in \"stop\" method or renamed to \"stop\".","commit_id":"5d1686dcb7350badfb228d7265cb877a933bce20"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"cff8cfe11883f208dc579e936b3054b1962c3aa6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    LOG.exception(_(\"UDP: Unable to store meter\"))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def stop_udp(self):"},{"line_number":83,"context_line":"        self.udp_run \u003d False"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def initialize_service_hook(self, service):"},{"line_number":86,"context_line":"        \u0027\u0027\u0027Consumers must be declared before consume_thread start.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B7xg%3D","line":83,"in_reply_to":"AAAATn%2F%2B8KQ%3D","updated":"2013-11-18 12:19:43.000000000","message":"I see your point, but that doesn\u0027t change anything IMHO. self.udp_run is just used to have a way to break the loop during the unit test, not to handle the service start/stop. ServiceLauncher handles that anyway without waiting for each thread to finish.\nThough I\u0027ll modify so it\u0027s more cleanish.","commit_id":"5d1686dcb7350badfb228d7265cb877a933bce20"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"33203868fa54a3aede13d5e94e9093ac864d82cf","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    LOG.exception(_(\"UDP: Unable to store meter\"))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def stop_udp(self):"},{"line_number":83,"context_line":"        self.udp_run \u003d False"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def initialize_service_hook(self, service):"},{"line_number":86,"context_line":"        \u0027\u0027\u0027Consumers must be declared before consume_thread start.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B8KQ%3D","line":83,"in_reply_to":"AAAATn%2F%2B8jE%3D","updated":"2013-11-18 11:00:17.000000000","message":"UDPCollectorService.stop was called from ceilometer.openstack.common.service.ServiceLauncher._wait_for_exit_or_signal when received signal exit.\nIf method name is changed, that is not called when received signal exit.","commit_id":"5d1686dcb7350badfb228d7265cb877a933bce20"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"45b972f69ee6b531d91ee19a21737375c9d04320","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    LOG.exception(_(\"UDP: Unable to store meter\"))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def stop_udp(self):"},{"line_number":83,"context_line":"        self.udp_run \u003d False"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def initialize_service_hook(self, service):"},{"line_number":86,"context_line":"        \u0027\u0027\u0027Consumers must be declared before consume_thread start.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B8jE%3D","line":83,"in_reply_to":"AAAATn%2F%2B9Xo%3D","updated":"2013-11-18 09:17:52.000000000","message":"It\u0027s used in the unit tests.","commit_id":"5d1686dcb7350badfb228d7265cb877a933bce20"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"e61e135f78e242bd207f086a56ee3f89943777e1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            # Add a dummy thread to have wait() working"},{"line_number":57,"context_line":"            self.tg.add_timer(604800, lambda: None)"},{"line_number":58,"context_line":"        if cfg.CONF.rpc_backend:"},{"line_number":59,"context_line":"            super(CollectorService, self).start()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def start_udp(self):"},{"line_number":62,"context_line":"        udp \u003d socket.socket(socket.AF_INET, socket.SOCK_DGRAM)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2BgwQ%3D","line":59,"updated":"2013-11-25 10:07:49.000000000","message":"Would the add_timer call above be superfluous unless rpc_backend is configured?\n\nPreviously, the superclass initializer was called *and* the dummy thread created regardless of whether rpc_backend was configured. Seems logical that if one of these actions is contingent on rpc_backend, then both should be.\n\nSo the logic would morph very slightly into something like:\n\n  udp_enabled \u003d cfg.CONF.collector.udp_address is not None\n  rpc_enabled \u003d cfg.CONF.rpc_backend is not None\n  if upd_enabled:\n      self.tg.add_thread(self.start_udp)\n  if rpc_enabled:\n      super(CollectorService, self).start()\n      if not udp_enabled:\n          self.tg.add_timer(604800, lambda: None)","commit_id":"b55659e220e5cd60273b3791125e413da99cf6f1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4e4d4899f5d571ca18b16af4f5af86582fb4ed60","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            # Add a dummy thread to have wait() working"},{"line_number":57,"context_line":"            self.tg.add_timer(604800, lambda: None)"},{"line_number":58,"context_line":"        if cfg.CONF.rpc_backend:"},{"line_number":59,"context_line":"            super(CollectorService, self).start()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def start_udp(self):"},{"line_number":62,"context_line":"        udp \u003d socket.socket(socket.AF_INET, socket.SOCK_DGRAM)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Bf98%3D","line":59,"in_reply_to":"AAAATn%2F%2BgwQ%3D","updated":"2013-11-25 13:27:14.000000000","message":"You\u0027re right. In this case when nothing is enabled, the daemon will just exit. Might be better, I\u0027ll change that.","commit_id":"b55659e220e5cd60273b3791125e413da99cf6f1"}],"ceilometer/tests/collector/test_service.py":[{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"efaeb579fac80df0bf0ffc03c1a1e68a215cf1bc","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            resource_metadata\u003d{},"},{"line_number":51,"context_line":"        ).as_dict()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def stop_srv(self, anything):"},{"line_number":54,"context_line":"        # Make the loop stop"},{"line_number":55,"context_line":"        self.srv.stop()"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2BhKY%3D","line":53,"updated":"2013-11-25 09:51:55.000000000","message":"This method is not called.","commit_id":"b55659e220e5cd60273b3791125e413da99cf6f1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4e4d4899f5d571ca18b16af4f5af86582fb4ed60","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            resource_metadata\u003d{},"},{"line_number":51,"context_line":"        ).as_dict()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def stop_srv(self, anything):"},{"line_number":54,"context_line":"        # Make the loop stop"},{"line_number":55,"context_line":"        self.srv.stop()"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Bf94%3D","line":53,"in_reply_to":"AAAATn%2F%2BhKY%3D","updated":"2013-11-25 13:27:14.000000000","message":"Done","commit_id":"b55659e220e5cd60273b3791125e413da99cf6f1"}]}
