)]}'
{"senlin/engine/senlin_lock.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"ab81d523c149d4c4860640b7d5879354f7cde818","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        db_api.action_mark_failed(context, action_id, time.time(),"},{"line_number":72,"context_line":"                                  reason\u003dreason)"},{"line_number":73,"context_line":"        owners \u003d db_api.cluster_lock_steal(cluster_id, action_id)"},{"line_number":74,"context_line":"        return action_id in owners"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    # Step 2: retry using global configuration options"},{"line_number":77,"context_line":"    retries \u003d cfg.CONF.lock_retry_times"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_37cd4ab7","line":74,"updated":"2015-12-29 12:14:59.000000000","message":"please review the whole action acquire logic. We first try grab the lock to see if we are lucky enough. If the target object is locked, we should first do a retry. The last resort (step 3) is a lock steal logic.\n\nPutting action_on_dead_engine here actually hurts the engine performance badly. The action_on_dead_engine is doing an RPC to the other engine and it has a time out logic if I\u0027m understanding it correctly.\n\nThis is unacceptable solution.","commit_id":"e9c21b56e4187ed91c00ca625d8bac4bb97b630e"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"e515287d67279312a1921e1376c6b8ae500d0969","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from oslo_config import cfg"},{"line_number":14,"context_line":"from oslo_log import log as logging"},{"line_number":15,"context_line":"from oslo_utils import timeutils"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from senlin.common.i18n import _"},{"line_number":19,"context_line":"from senlin.common.i18n import _LE"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_3d7a4078","line":16,"updated":"2016-01-29 13:50:41.000000000","message":"isn\u0027t time a builtin package? If so, it should be placed in its own (first) group.","commit_id":"ad20b18a48a77399aa08eb4821747cb87f0978f3"},{"author":{"_account_id":7404,"name":"Ethan Lynn","email":"xuanlangjian@gmail.com","username":"GaryLynn"},"change_message_id":"51b762bf4e5c0795eecd1234d0ba8e04ab4347a8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from oslo_config import cfg"},{"line_number":14,"context_line":"from oslo_log import log as logging"},{"line_number":15,"context_line":"from oslo_utils import timeutils"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from senlin.common.i18n import _"},{"line_number":19,"context_line":"from senlin.common.i18n import _LE"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_f6dda5e0","line":16,"in_reply_to":"7a5de9d1_3d7a4078","updated":"2016-01-29 14:53:39.000000000","message":"It\u0027s buildin package, but still need to import I think","commit_id":"ad20b18a48a77399aa08eb4821747cb87f0978f3"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"e515287d67279312a1921e1376c6b8ae500d0969","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    while retries \u003e 0:"},{"line_number":76,"context_line":"        scheduler.sleep(retry_interval)"},{"line_number":77,"context_line":"        LOG.debug(\u0027Acquire lock for cluster %s again\u0027 % cluster_id)"},{"line_number":78,"context_line":"        owners \u003d db_api.cluster_lock_acquire(cluster_id, action_id, scope)"},{"line_number":79,"context_line":"        if action_id in owners:"},{"line_number":80,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_fdc6e898","line":77,"range":{"start_line":77,"start_character":19,"end_line":77,"end_character":43},"updated":"2016-01-29 13:50:41.000000000","message":"Attempting to lock cluster %s again","commit_id":"ad20b18a48a77399aa08eb4821747cb87f0978f3"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"e515287d67279312a1921e1376c6b8ae500d0969","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    retry_interval \u003d cfg.CONF.lock_retry_interval"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    while retries \u003e 0:"},{"line_number":143,"context_line":"        scheduler.sleep(retry_interval)"},{"line_number":144,"context_line":"        LOG.debug(\u0027Acquire lock for node %s again\u0027 % node_id)"},{"line_number":145,"context_line":"        owner \u003d db_api.node_lock_acquire(node_id, action_id)"},{"line_number":146,"context_line":"        if action_id \u003d\u003d owner:"},{"line_number":147,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_1d20a447","line":144,"range":{"start_line":143,"start_character":39,"end_line":144,"end_character":19},"updated":"2016-01-29 13:50:41.000000000","message":"Attempting to lock node %s again.","commit_id":"ad20b18a48a77399aa08eb4821747cb87f0978f3"}]}
