From 5b4c7fd632edaf89370a84c8ea3684f985c56954 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Fri, 3 Oct 2025 16:54:30 -0700 Subject: [PATCH] Split on line feed when parsing transport files in the build (#135978) When parsing transport files that may contain comments we split on newline. On windows systems these files _might_ have the line feed replaced by CRLF. This commit adjusts the parsing to only split on line feed so that regardless of what the system line separator is we will split the lines as needed. --- .../internal/transport/TransportVersionDefinition.java | 6 ++++-- .../internal/transport/TransportVersionUpperBound.java | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionDefinition.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionDefinition.java index 5c73b720a0bc8..518411fce5fda 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionDefinition.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionDefinition.java @@ -22,9 +22,11 @@ public static TransportVersionDefinition fromString(Path file, String contents, String idsLine = null; if (contents.isEmpty() == false) { - String[] lines = contents.split(System.lineSeparator()); + // Regardless of whether windows newlines exist (they could be added by git), we split on line feed. + // All we care about skipping lines with the comment character, so the remaining \r won't matter + String[] lines = contents.split("\n"); for (String line : lines) { - line = line.replaceAll("\\s+", ""); + line = line.strip(); if (line.startsWith("#") == false) { idsLine = line; break; diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUpperBound.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUpperBound.java index af88aa646d790..b37d2ec3676ba 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUpperBound.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUpperBound.java @@ -24,9 +24,11 @@ public static TransportVersionUpperBound fromString(Path file, String contents) String branch = filename.substring(slashIndex == -1 ? 0 : (slashIndex + 1), filename.length() - 4); String idsLine = null; - String[] lines = contents.split(System.lineSeparator()); + // Regardless of whether windows newlines exist (they could be added by git), we split on line feed. + // All we care about skipping lines with the comment character, so the remaining \r won't matter + String[] lines = contents.split("\n"); for (String line : lines) { - line = line.replaceAll("\\s+", ""); + line = line.strip(); if (line.startsWith("#") == false) { idsLine = line; break;