Skip to content

Commit 85f410b

Browse files
Yicong-HuangIsaac
andcommitted
fix: also check the JIRA affects version when re-resolving without a fix version change
Co-authored-by: Isaac <no-reply@databricks.com>
1 parent 3033357 commit 85f410b

1 file changed

Lines changed: 19 additions & 9 deletions

File tree

dev/merge_spark_pr.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,6 +1366,12 @@ def reconcile_jira_affects_versions(
13661366
jira_ops.update_affects_versions(issue, new_names)
13671367

13681368

1369+
def maybe_reconcile_jira_affects_versions(issue, fix_version_names, affects_available):
1370+
"""Reconcile the Affects Version/s only when they fail to precede the fix version(s)."""
1371+
if fix_precedes_affects(fix_version_names, [v.name for v in issue.fields.versions]):
1372+
reconcile_jira_affects_versions(issue, fix_version_names, affects_available)
1373+
1374+
13691375
def get_jira_issue(prompt, default_jira_id=""):
13701376
jira_id = bold_input("%s [%s]: " % (prompt, default_jira_id))
13711377
if jira_id == "":
@@ -1449,8 +1455,12 @@ def resolve_jira_issue(
14491455
)
14501456
if all_inferred_present:
14511457
print(
1452-
"JIRA issue %s already contains all inferred fix versions; no update needed."
1453-
% issue.key
1458+
"JIRA issue %s already contains all inferred fix versions; no fix version "
1459+
"update needed." % issue.key
1460+
)
1461+
# A re-run may still have Affects Version/s sitting above the unchanged fix set.
1462+
maybe_reconcile_jira_affects_versions(
1463+
issue, existing_fix_version_names, affects_available
14541464
)
14551465
return
14561466
if default_fix_list:
@@ -1494,11 +1504,9 @@ def resolve_jira_issue(
14941504
print("Error setting fix version(s), try again (or leave blank and fix manually)")
14951505

14961506
# On a fresh resolve, offer to update the Affects Version/s when they sit above the fix
1497-
# version(s) just chosen; the backport path above handles the already-resolved case.
1498-
if not is_resolved and fix_precedes_affects(
1499-
fix_versions, [v.name for v in issue.fields.versions]
1500-
):
1501-
reconcile_jira_affects_versions(issue, fix_versions, affects_available)
1507+
# version(s) just chosen; the already-resolved paths handle their own cases.
1508+
if not is_resolved:
1509+
maybe_reconcile_jira_affects_versions(issue, fix_versions, affects_available)
15021510

15031511
def get_version_json(version_str):
15041512
return list(filter(lambda v: v.name == version_str, versions))[0].raw
@@ -1510,12 +1518,14 @@ def get_version_json(version_str):
15101518
jira_fix_versions = [v for v in jira_fix_versions if v["name"] not in existing_names]
15111519
if not jira_fix_versions:
15121520
print("No new fix versions selected for JIRA issue %s; no update needed." % issue.key)
1521+
maybe_reconcile_jira_affects_versions(
1522+
issue, existing_fix_version_names, affects_available
1523+
)
15131524
return
15141525
# A backport adds an earlier fix line, which usually means that line is affected too;
15151526
# offer to extend the Affects Version/s down when they miss the full fix set.
15161527
full_fix_names = existing_fix_version_names + [v["name"] for v in jira_fix_versions]
1517-
if fix_precedes_affects(full_fix_names, [v.name for v in issue.fields.versions]):
1518-
reconcile_jira_affects_versions(issue, full_fix_names, affects_available)
1528+
maybe_reconcile_jira_affects_versions(issue, full_fix_names, affects_available)
15191529
jira_ops.add_fix_versions(issue, existing_fix_versions, jira_fix_versions)
15201530
return
15211531

0 commit comments

Comments
 (0)