)]}'
{"senlin/db/sqlalchemy/api.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"24c105a1be0e416eda3e9fc7e14047840317b8c3","unresolved":false,"context_lines":[{"line_number":1357,"context_line":"        engines \u003d session.query(models.Service).all()"},{"line_number":1358,"context_line":"        cfg.CONF.import_opt(\"periodic_interval\", \"senlin.common.config\")"},{"line_number":1359,"context_line":"        max_elapse \u003d 2 * cfg.CONF.periodic_interval"},{"line_number":1360,"context_line":"        eventlet.sleep(max_elapse)"},{"line_number":1361,"context_line":"        svc_ids \u003d [e.id for e in engines if not utils.is_service_dead(e,"},{"line_number":1362,"context_line":"                   service_get(context, e.id))]"},{"line_number":1363,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_9279f0ca","line":1360,"range":{"start_line":1360,"start_character":8,"end_line":1360,"end_character":34},"updated":"2017-01-23 12:45:16.000000000","message":"if we want to ensure registry_claim is done after service cleanup, we should do it when service is started, not by changing DB interface in this way.","commit_id":"a820735906ced98397bd7417ae16b4c03cf014ef"},{"author":{"_account_id":22998,"name":"XueFengLiu","email":"liu.xuefeng1@zte.com.cn","username":"sgfeng"},"change_message_id":"c2697624888b3a366e2d3d23ce7a0045ed1513e4","unresolved":false,"context_lines":[{"line_number":1357,"context_line":"        engines \u003d session.query(models.Service).all()"},{"line_number":1358,"context_line":"        cfg.CONF.import_opt(\"periodic_interval\", \"senlin.common.config\")"},{"line_number":1359,"context_line":"        max_elapse \u003d 2 * cfg.CONF.periodic_interval"},{"line_number":1360,"context_line":"        eventlet.sleep(max_elapse)"},{"line_number":1361,"context_line":"        svc_ids \u003d [e.id for e in engines if not utils.is_service_dead(e,"},{"line_number":1362,"context_line":"                   service_get(context, e.id))]"},{"line_number":1363,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_d8c77d10","line":1360,"range":{"start_line":1360,"start_character":8,"end_line":1360,"end_character":34},"in_reply_to":"5a3905b3_3417da55","updated":"2017-02-11 07:44:03.000000000","message":"Maybe in current design, we can call registry_claim periodically to simplify handling.\nIf someday we want support health_registry load balance we redesign it in that time.\nIn current design, two reason need to call registry_claim periodically:\n1.We a new engine start, it cloud not pick some health registry which\u0027s engine has die.\n2.Suppose there are 10 health registries which are running by these two engines.When one engine stopped and not restart, some health registries will no engine to run.","commit_id":"a820735906ced98397bd7417ae16b4c03cf014ef"},{"author":{"_account_id":22998,"name":"XueFengLiu","email":"liu.xuefeng1@zte.com.cn","username":"sgfeng"},"change_message_id":"dba1991c3b890f37a740c1549f3235fff859a16a","unresolved":false,"context_lines":[{"line_number":1357,"context_line":"        engines \u003d session.query(models.Service).all()"},{"line_number":1358,"context_line":"        cfg.CONF.import_opt(\"periodic_interval\", \"senlin.common.config\")"},{"line_number":1359,"context_line":"        max_elapse \u003d 2 * cfg.CONF.periodic_interval"},{"line_number":1360,"context_line":"        eventlet.sleep(max_elapse)"},{"line_number":1361,"context_line":"        svc_ids \u003d [e.id for e in engines if not utils.is_service_dead(e,"},{"line_number":1362,"context_line":"                   service_get(context, e.id))]"},{"line_number":1363,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_f11309b6","line":1360,"range":{"start_line":1360,"start_character":8,"end_line":1360,"end_character":34},"in_reply_to":"5a3905b3_9279f0ca","updated":"2017-01-23 15:30:18.000000000","message":"It\u0027s no matter whether cleanup is done.","commit_id":"a820735906ced98397bd7417ae16b4c03cf014ef"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"b37eb0abdc851a951e27799b3f70a2e3771ce494","unresolved":false,"context_lines":[{"line_number":1357,"context_line":"        engines \u003d session.query(models.Service).all()"},{"line_number":1358,"context_line":"        cfg.CONF.import_opt(\"periodic_interval\", \"senlin.common.config\")"},{"line_number":1359,"context_line":"        max_elapse \u003d 2 * cfg.CONF.periodic_interval"},{"line_number":1360,"context_line":"        eventlet.sleep(max_elapse)"},{"line_number":1361,"context_line":"        svc_ids \u003d [e.id for e in engines if not utils.is_service_dead(e,"},{"line_number":1362,"context_line":"                   service_get(context, e.id))]"},{"line_number":1363,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_3417da55","line":1360,"range":{"start_line":1360,"start_character":8,"end_line":1360,"end_character":34},"in_reply_to":"5a3905b3_f11309b6","updated":"2017-01-25 08:55:52.000000000","message":"if the cleanup is not done, health manager won\u0027t be able to reliably detect if an engine is down or not. The registry_claim function will fail for the first time it tries to take over some clusters.\n\nHaving all registry_claim() calls delayed is a bad design decision. It will slow down all the calls.","commit_id":"a820735906ced98397bd7417ae16b4c03cf014ef"},{"author":{"_account_id":22998,"name":"XueFengLiu","email":"liu.xuefeng1@zte.com.cn","username":"sgfeng"},"change_message_id":"c95517b75ecf2e8b5886f1d43c1342679f84fa47","unresolved":false,"context_lines":[{"line_number":1357,"context_line":"        engines \u003d session.query(models.Service).all()"},{"line_number":1358,"context_line":"        cfg.CONF.import_opt(\"periodic_interval\", \"senlin.common.config\")"},{"line_number":1359,"context_line":"        max_elapse \u003d 2 * cfg.CONF.periodic_interval"},{"line_number":1360,"context_line":"        eventlet.sleep(max_elapse)"},{"line_number":1361,"context_line":"        svc_ids \u003d [e.id for e in engines if not utils.is_service_dead(e,"},{"line_number":1362,"context_line":"                   service_get(context, e.id))]"},{"line_number":1363,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_38a33951","line":1360,"range":{"start_line":1360,"start_character":8,"end_line":1360,"end_character":34},"in_reply_to":"fa31d9ce_d8c77d10","updated":"2017-02-11 07:46:19.000000000","message":"Maybe in current design, we can call registry_claim periodically to simplify handling.\nIf someday we want to support health_registry load balance we can redesign it in that time.\nIn current design, two reasons cause we need to call registry_claim periodically:\n1.When a new engine start, it cloud not pick some health registry which\u0027s engine has die.\n2.Suppose there are 10 health registries which are running by these two engines.When one engine stopped and not restart, some health registries will no engine to run.","commit_id":"a820735906ced98397bd7417ae16b4c03cf014ef"}],"senlin/engine/service.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"24c105a1be0e416eda3e9fc7e14047840317b8c3","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        # we may want to make the clean-up attempts configurable."},{"line_number":132,"context_line":"        self.cleanup_timer \u003d self.TG.add_timer(2 * CONF.periodic_interval,"},{"line_number":133,"context_line":"                                               self.service_manage_cleanup)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        self.TG.add_timer(CONF.periodic_interval,"},{"line_number":136,"context_line":"                          self.service_manage_report)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_927e5017","line":133,"range":{"start_line":133,"start_character":52,"end_line":133,"end_character":74},"updated":"2017-01-23 12:45:16.000000000","message":"the initial patch that made this an async job is problematic. The service_manage_cleanup function is called asynchronous.","commit_id":"a820735906ced98397bd7417ae16b4c03cf014ef"},{"author":{"_account_id":22998,"name":"XueFengLiu","email":"liu.xuefeng1@zte.com.cn","username":"sgfeng"},"change_message_id":"dba1991c3b890f37a740c1549f3235fff859a16a","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        # we may want to make the clean-up attempts configurable."},{"line_number":132,"context_line":"        self.cleanup_timer \u003d self.TG.add_timer(2 * CONF.periodic_interval,"},{"line_number":133,"context_line":"                                               self.service_manage_cleanup)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        self.TG.add_timer(CONF.periodic_interval,"},{"line_number":136,"context_line":"                          self.service_manage_report)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_11e415df","line":133,"range":{"start_line":133,"start_character":52,"end_line":133,"end_character":74},"in_reply_to":"5a3905b3_927e5017","updated":"2017-01-23 15:30:18.000000000","message":"It\u0027s no matter whether we adjust the order in here.\nModify here just for better.It may help to reduce loop in health claim.\nActually, service_manage_cleanup will run immediately when add_timer with such params.","commit_id":"a820735906ced98397bd7417ae16b4c03cf014ef"}]}
