From 294b7bbbfe65fe3e67e004cb6d6195c66855c0ae Mon Sep 17 00:00:00 2001 From: Ayush Sharma Date: Thu, 19 Sep 2024 10:23:15 +0000 Subject: [PATCH] [PLAT-14435]Fix args parsing in failure detection py script Summary: Key value parsing fails for values which contain `=` Eg: For `--ysql_pg_conf_csv="shared_preload_libraries=passwordcheck"` the script fails with ``` Traceback (most recent call last): File "/home/yugabyte/disk_io_failure_detection_py3.py", line 157, in config_dict = parse_config_file(DEFAULT_HOME_DIR + process + CONF_PATH) File "/home/yugabyte/disk_io_failure_detection_py3.py", line 121, in parse_config_file key, value = line[2:].split('=') ValueError: too many values to unpack (expected 2) ``` Update the script to split after the first `=`. Test Plan: This fix was tested in fidelity's env. Reviewers: vpatibandla Reviewed By: vpatibandla Subscribers: yugaware Differential Revision: https://phorge.dev.yugabyte.com/D38213 --- managed/scripts/disk-io-failure/disk_io_failure_detection.py | 2 +- .../scripts/disk-io-failure/disk_io_failure_detection_py3.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/managed/scripts/disk-io-failure/disk_io_failure_detection.py b/managed/scripts/disk-io-failure/disk_io_failure_detection.py index 384375ed65c9..6171fbfc20b9 100644 --- a/managed/scripts/disk-io-failure/disk_io_failure_detection.py +++ b/managed/scripts/disk-io-failure/disk_io_failure_detection.py @@ -122,7 +122,7 @@ def parse_config_file(config_path): with open(config_path, 'r') as file: for line in file: line = line.strip() - key, value = line[2:].split('=') + key, value = line[2:].split('=', 1) if key == PROCESS_NAMES_ARG: args[key] = value.split() elif key == TIME_LIMIT_ARG: diff --git a/managed/scripts/disk-io-failure/disk_io_failure_detection_py3.py b/managed/scripts/disk-io-failure/disk_io_failure_detection_py3.py index 9f770f22d98f..981805f91895 100644 --- a/managed/scripts/disk-io-failure/disk_io_failure_detection_py3.py +++ b/managed/scripts/disk-io-failure/disk_io_failure_detection_py3.py @@ -116,7 +116,7 @@ def parse_config_file(config_path): for line in file: line = line.strip() if line.startswith(DOUBLE_HYPHEN): - key, value = line[2:].split('=') + key, value = line[2:].split('=', 1) if key == PROCESS_NAMES_ARG: args[key] = value.split() elif key == TIME_LIMIT_ARG: