Skip to content

Commit 0e16a6f

Browse files
committed
[SPARK-27277][INFRA] Recover from setting fix version failure in merge script
## What changes were proposed in this pull request? I happened to meet this case few times before: ``` Enter comma-separated fix version(s) [3.0.0]: 3.0,0 Restoring head pointer to master git checkout master Already on 'master' git branch Traceback (most recent call last): File "./dev/merge_spark_pr_jira.py", line 537, in <module> main() File "./dev/merge_spark_pr_jira.py", line 523, in main resolve_jira_issues(title, merged_refs, jira_comment) File "./dev/merge_spark_pr_jira.py", line 359, in resolve_jira_issues resolve_jira_issue(merge_branches, comment, jira_id) File "./dev/merge_spark_pr_jira.py", line 302, in resolve_jira_issue jira_fix_versions = map(lambda v: get_version_json(v), fix_versions) File "./dev/merge_spark_pr_jira.py", line 302, in <lambda> jira_fix_versions = map(lambda v: get_version_json(v), fix_versions) File "./dev/merge_spark_pr_jira.py", line 300, in get_version_json return filter(lambda v: v.name == version_str, versions)[0].raw IndexError: list index out of range ``` I typed the fix version wrongly (there's comma in `3.0,0`) and it ended the loop in the merge script. Not a big deal but it bugged me few times. Finally I met this today again, and decided to fix. This PR proposes to recover from wrongly set fix versions. ## How was this patch tested? I manually copied and pasted the specific codes and tested separately in both Python 2 and Python 3. **Positive cases:** ``` Enter comma-separated fix version(s) [3.0.0]: # blank test (to use default) ['3.0.0'] ``` ``` Enter comma-separated fix version(s) [3.0.0,2.4.2]: # multiple default versions ['3.0.0', '2.4.2'] ``` ``` Enter comma-separated fix version(s) [3.0.0]: 2.4.1 # valid version ['2.4.1'] ``` ``` Enter comma-separated fix version(s) [3.0.0]: 3.0.0,2.4.2 # multiple valid versions ['3.0.0', '2.4.2'] ``` **Keyboard interrupt(Ctrl + c):** ``` Enter comma-separated fix version(s) [3.0.0]: ^CTraceback (most recent call last): # keyboard interrupt File "test_merge_script.py", line 45, in <module> test() File "test_merge_script.py", line 26, in test fix_versions = input("Enter comma-separated fix version(s) [%s]: " % default_fix_versions) KeyboardInterrupt ``` **Wrongly typed versions (recovered):** ``` Enter comma-separated fix version(s) [3.0.0]: 3.1 Specified version(s) [3.1] not found in the available versions, try again (or leave blank and fix manually). Enter comma-separated fix version(s) [3.0.0]: 123 Specified version(s) [123] not found in the available versions, try again (or leave blank and fix manually). Enter comma-separated fix version(s) [3.0.0]: 3.0,0 Specified version(s) [3.0, 0] not found in the available versions, try again (or leave blank and fix manually). Enter comma-separated fix version(s) [3.0.0]: damn Specified version(s) [damn] not found in the available versions, try again (or leave blank and fix manually). Enter comma-separated fix version(s) [3.0.0]: 3.0.0,2.5.2 # one invalid versions in multiple versions Specified version(s) [3.0.0, 2.5.2] not found in the available versions, try again (or leave blank and fix manually). ``` **Arbitrary exceptions in fix version parsing (recovered)** ``` Enter comma-separated fix version(s) [3.0.0]: Traceback (most recent call last): File "tmp.py", line 11, in <module> raise Exception("arbitrary exception") Exception: arbitrary exception Error setting fix version(s), try again (or leave blank and fix manually) Enter comma-separated fix version(s) [3.0.0]: Traceback (most recent call last): File "tmp.py", line 10, in <module> raise Exception("arbitrary exception") Exception: arbitrary exception Error setting fix version(s), try again (or leave blank and fix manually) Enter comma-separated fix version(s) [3.0.0]: ``` Closes #24213 from HyukjinKwon/merge_script_fix_version. Authored-by: Hyukjin Kwon <[email protected]> Signed-off-by: Hyukjin Kwon <[email protected]>
1 parent 529a061 commit 0e16a6f

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

dev/merge_spark_pr.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -289,10 +289,24 @@ def resolve_jira_issue(merge_branches, comment, default_jira_id=""):
289289
default_fix_versions = filter(lambda x: x != v, default_fix_versions)
290290
default_fix_versions = ",".join(default_fix_versions)
291291

292-
fix_versions = input("Enter comma-separated fix version(s) [%s]: " % default_fix_versions)
293-
if fix_versions == "":
294-
fix_versions = default_fix_versions
295-
fix_versions = fix_versions.replace(" ", "").split(",")
292+
available_versions = set(map(lambda v: v.name, versions))
293+
while True:
294+
try:
295+
fix_versions = input(
296+
"Enter comma-separated fix version(s) [%s]: " % default_fix_versions)
297+
if fix_versions == "":
298+
fix_versions = default_fix_versions
299+
fix_versions = fix_versions.replace(" ", "").split(",")
300+
if set(fix_versions).issubset(available_versions):
301+
break
302+
else:
303+
print("Specified version(s) [%s] not found in the available versions, try "
304+
"again (or leave blank and fix manually)." % (", ".join(fix_versions)))
305+
except KeyboardInterrupt:
306+
raise
307+
except:
308+
traceback.print_exc()
309+
print("Error setting fix version(s), try again (or leave blank and fix manually)")
296310

297311
def get_version_json(version_str):
298312
return filter(lambda v: v.name == version_str, versions)[0].raw

0 commit comments

Comments
 (0)