Skip to content

Commit 2f499a3

Browse files
authored
[runners-flink] Use index-based version comparison in flink_runner.gradle (#38272)
* [runners-flink] Use index-based version comparison in flink_runner.gradle `previous_versions` was computed by lexicographic string comparison against `flink_major`: def previous_versions = all_versions.findAll { it < flink_major } This breaks for `flink_versions=1.17,1.18,1.19,1.20,2.0` (the current gradle.properties value) because lexicographic ordering disagrees with semantic ordering whenever a two-digit minor crosses a single-digit boundary. Concretely, today this resolves to: flink_major=1.17 -> [] (correct) flink_major=1.18 -> ["1.17", "1.20"] (wrong; should be ["1.17"]) flink_major=1.19 -> ["1.17", "1.18", "1.20"] (wrong; should be ["1.17", "1.18"]) flink_major=1.20 -> [] (wrong; should be ["1.17", "1.18", "1.19"]) flink_major=2.0 -> ["1.17", "1.18", "1.19", "1.20"](correct) The 1.18 and 1.19 builds therefore pick up `runners/flink/1.20/src/main/java/.../DoFnOperator.java` as a "previous" override, and the 1.20 build loses the 1.19 test overrides (MemoryStateBackendWrapper, StreamSources). Replace the lex compare with index lookup against `flink_versions`, exactly like spark_runner.gradle does (PR #38233). Also: - Trim whitespace from each entry (defensive against `flink_versions=1.17, 1.18, ...`). - Throw a clear GradleException if `flink_major` isn't listed in `flink_versions`, instead of silently producing an empty `previous_versions` list. - Update `use_override` to derive from the same index, mirroring the Spark version. * Trigger Build * [runners-flink] Address Gemini review on flink_runner.gradle - Trim/stringify flink_major before indexOf so command-line / GString values match the trimmed all_versions entries. - Drop redundant ternary on previous_versions; subList(0, 0) is already empty when flink_major is the first listed version. * Trigger Build
1 parent de1cc7d commit 2f499a3

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

runners/flink/flink_runner.gradle

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,16 @@ def overrides(versions, type, base_path, group='java') {
3232
["${base_path}/src/${type}/${group}"] + versions.collect { "${base_path}/${it}/src/${type}/${group}" } + ["./src/${type}/${group}"]
3333
}
3434

35-
def all_versions = flink_versions.split(",")
36-
37-
def previous_versions = all_versions.findAll { it < flink_major }
35+
def all_versions = flink_versions.split(",").collect { it.trim() }
36+
// Determine version order by list position rather than string comparison so two-digit
37+
// minors (e.g. "1.20") sort correctly relative to "1.18" / "1.19".
38+
def flink_major_index = all_versions.indexOf(flink_major?.toString()?.trim())
39+
if (flink_major_index < 0) {
40+
throw new GradleException(
41+
"flink_major='${flink_major}' is not listed in flink_versions='${flink_versions}' " +
42+
"(see root gradle.properties).")
43+
}
44+
def previous_versions = all_versions.subList(0, flink_major_index)
3845

3946
// Version specific code overrides.
4047
def main_source_overrides = overrides(previous_versions, "main", base_path)
@@ -106,7 +113,7 @@ def copyTestResourcesOverrides = tasks.register('copyTestResourcesOverrides', Co
106113
it.duplicatesStrategy DuplicatesStrategy.INCLUDE
107114
}
108115

109-
def use_override = (flink_major != all_versions.first())
116+
def use_override = (flink_major_index > 0)
110117
def sourceBase = "${project.projectDir}/../src"
111118

112119
if (use_override) {

0 commit comments

Comments
 (0)