)]}'
{"ironic/common/utils.py":[{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"4e465a7dcd03144f702dbd246b45bac00e34b237","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        # will raise OSError if the process does not exist."},{"line_number":717,"context_line":"        os.kill(pid, 0)"},{"line_number":718,"context_line":"    except OSError:"},{"line_number":719,"context_line":"        return False"},{"line_number":720,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_d1de856c","line":719,"updated":"2015-11-18 08:49:44.000000000","message":"Better to add a log here.","commit_id":"d2984c364df4347109c7094b20a3242927514afa"}],"ironic/drivers/modules/console_utils.py":[{"author":{"_account_id":11042,"name":"chenglch","email":"chenglch@cn.ibm.com","username":"chenglch"},"change_message_id":"ab2b49520ce60fccb27e25533646e85478084e60","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_4e288186","line":233,"updated":"2015-11-19 02:58:52.000000000","message":"Just one question: from the bug description, if the return code is 0 and pid file is already created, but some error happened( process is not running), is this loop greenthread still waiting util timeout?","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"4c20d73ecffc941b8320fdd224815a9d56ccdd0d","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_eeb36a98","line":233,"updated":"2015-11-19 09:49:13.000000000","message":"pid_file is exactly the console pid, you don\u0027t have to get it again.\nsee L194","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"2d31b8c95fa283d53378ca3f7fdaf682bbc737d2","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_ee537569","line":233,"in_reply_to":"ba8a016a_4e288186","updated":"2015-11-19 03:28:08.000000000","message":"hi chenglch, if this condition is satisfied, we will raise LoopingCallDone below, you can see we only wait for timeout if returncode is not None.","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"9a0512276b606e511d1a2b8cfd61729bbe3643a1","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_49027bb5","line":233,"in_reply_to":"ba8a016a_c610985b","updated":"2015-11-20 02:05:45.000000000","message":"yes, I tested it and works as expected.","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"bb1dce5ace188ce3606681c4ac88810fa83f9b0b","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_097793a0","line":233,"in_reply_to":"ba8a016a_e454e9fe","updated":"2015-11-20 01:58:10.000000000","message":"Thanks, I made a mistake here. Sorry","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"bd7ba57996e1316f1ba1ca35b86beeebf487e69f","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_eeaff527","line":233,"in_reply_to":"ba8a016a_ee537569","updated":"2015-11-19 03:30:02.000000000","message":"s/not None/None\n\nsorry, I mean we only wait for timeout if returncode is None.","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"},{"author":{"_account_id":11042,"name":"chenglch","email":"chenglch@cn.ibm.com","username":"chenglch"},"change_message_id":"cd2c0f812fcc01db117f05d483f79084202a6cf5","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_c610985b","line":233,"in_reply_to":"ba8a016a_eeaff527","updated":"2015-11-20 01:55:01.000000000","message":"can we get stderr message from the shellinaboxd daemon if\n\nlocals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and not psutil.pid_exists(_get_console_pid(node_uuid))","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"1f7a3694111a03a04c55849cd3d412c3a98c5762","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        # otherwise check the error."},{"line_number":231,"context_line":"        if locals[\u0027returncode\u0027] is not None:"},{"line_number":232,"context_line":"            if (locals[\u0027returncode\u0027] \u003d\u003d 0 and os.path.exists(pid_file) and"},{"line_number":233,"context_line":"                psutil.pid_exists(_get_console_pid(node_uuid))):"},{"line_number":234,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                (stdout, stderr) \u003d popen_obj.communicate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_e454e9fe","line":233,"in_reply_to":"ba8a016a_eeb36a98","updated":"2015-11-19 10:07:28.000000000","message":"pid_file is the path of the file, console pid is the pid number in that file.","commit_id":"41158b7e049dc2e4662a7fb4f3aac33de49c5885"}]}
