Fix 'NoSuchProcess' exception in process_checker (#5716)

The psutil library used in process_checker create a cache for each
process when calling process_iter. So, there is some possibility that
one process exists when calling process_iter, but not exists when
calling cmdline, which will raise a NoSuchProcess exception. This commit
fix the issue.

Signed-off-by: bingwang <bingwang@microsoft.com>
This commit is contained in:
bingwang-ms 2020-10-27 09:25:35 +08:00 committed by GitHub
parent 9e34003136
commit 36c52cca2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -28,9 +28,12 @@ def check_process_existence(container_name, process_cmdline):
# state, then it will be marked as 'running'.
is_running = False
for process in psutil.process_iter(["cmdline", "status"]):
if ((' '.join(process.cmdline())).startswith(process_cmdline) and process.status() in ["running", "sleeping"]):
is_running = True
break
try:
if ((' '.join(process.cmdline())).startswith(process_cmdline) and process.status() in ["running", "sleeping"]):
is_running = True
break
except psutil.NoSuchProcess:
pass
if not is_running:
# If this script is run by Monit, then the following output will be appended to