diff options
author | Eddie Louie <eddie.louie@mongodb.com> | 2017-07-24 12:18:55 -0400 |
---|---|---|
committer | Eddie Louie <eddie.louie@mongodb.com> | 2017-07-24 20:30:44 -0400 |
commit | cd64c5cfbd0706b38d52cbf9f772fa08ecd969fc (patch) | |
tree | 94560dcd0cfe2913574ec7bed5be30444cdf84db /buildscripts/collect_resource_info.py | |
parent | 7a6151bd1f56c1fab96457f2e60206f106608508 (diff) | |
download | mongo-cd64c5cfbd0706b38d52cbf9f772fa08ecd969fc.tar.gz |
SERVER-30285 Continue on KeyError in buildscripts/collect_resource_info.py
Diffstat (limited to 'buildscripts/collect_resource_info.py')
-rwxr-xr-x | buildscripts/collect_resource_info.py | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/buildscripts/collect_resource_info.py b/buildscripts/collect_resource_info.py index f4090b264f5..95614b76427 100755 --- a/buildscripts/collect_resource_info.py +++ b/buildscripts/collect_resource_info.py @@ -28,7 +28,8 @@ def open_or_use_stdout(filename): yield sys.stdout return - fp = open(filename, "w") + line_buffered = 1 + fp = open(filename, "w", line_buffered) try: yield fp finally: @@ -80,16 +81,25 @@ def main(): sys_res_dict["mem_avail"] = sys_info["vmstat"]["available"] ps_info = res_json["ps_info"] for process in ps_info: - sys_res_dict["pid"] = process["pid"] - sys_res_dict["ppid"] = process["parentPid"] - sys_res_dict["numThreads"] = process["numThreads"] - sys_res_dict["command"] = process.get("command", "") - sys_res_dict["cpu_user"] = process["cpu"]["user"] - sys_res_dict["cpu_sys"] = process["cpu"]["system"] - sys_res_dict["io_write"] = process["io"]["writeBytes"] - sys_res_dict["io_read"] = process["io"]["readBytes"] - sys_res_dict["mem_used"] = process["mem"]["rss"] + try: + sys_res_dict["pid"] = process["pid"] + sys_res_dict["ppid"] = process["parentPid"] + sys_res_dict["num_threads"] = process["numThreads"] + sys_res_dict["command"] = process.get("command", "") + sys_res_dict["cpu_user"] = process["cpu"]["user"] + sys_res_dict["cpu_sys"] = process["cpu"]["system"] + sys_res_dict["io_write"] = process["io"]["writeBytes"] + sys_res_dict["io_read"] = process["io"]["readBytes"] + sys_res_dict["mem_used"] = process["mem"]["rss"] + except KeyError: + # KeyError may occur as a result of file missing from /proc, likely due to + # process exiting. + continue + print(dumps(sys_res_dict, sort_keys=True), file=fp) + + # Flush internal buffers associated with file to disk. + os.fsync(fp.fileno()) time.sleep(options.interval) if __name__ == "__main__": |