diff --git a/server/src/main/java/org/elasticsearch/TransportVersion.java b/server/src/main/java/org/elasticsearch/TransportVersion.java index cff3c22aa9e9e..f130f7d62e29b 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersion.java +++ b/server/src/main/java/org/elasticsearch/TransportVersion.java @@ -117,7 +117,10 @@ public static TransportVersion fromBufferedReader( Integer upperBound ) { try { - String line = bufferedReader.readLine(); + String line; + do { + line = bufferedReader.readLine(); + } while (line.replaceAll("\\s+", "").startsWith("#")); String[] parts = line.replaceAll("\\s+", "").split(","); String check; while ((check = bufferedReader.readLine()) != null) { diff --git a/server/src/test/java/org/elasticsearch/TransportVersionTests.java b/server/src/test/java/org/elasticsearch/TransportVersionTests.java index 761ae19dbad7d..e51ca0c553fb6 100644 --- a/server/src/test/java/org/elasticsearch/TransportVersionTests.java +++ b/server/src/test/java/org/elasticsearch/TransportVersionTests.java @@ -354,4 +354,41 @@ public void testSupports() { assertThat(new TransportVersion(null, 100001000, null).supports(test4), is(true)); assertThat(new TransportVersion(null, 100001001, null).supports(test4), is(true)); } + + public void testComment() { + byte[] data1 = ("#comment" + System.lineSeparator() + "1000000").getBytes(StandardCharsets.UTF_8); + TransportVersion test1 = TransportVersion.fromBufferedReader( + "", + "testSupports3", + false, + true, + new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data1), StandardCharsets.UTF_8)), + 5000000 + ); + assertThat(new TransportVersion(null, 1000000, null).supports(test1), is(true)); + + byte[] data2 = (" # comment" + System.lineSeparator() + "1000000").getBytes(StandardCharsets.UTF_8); + TransportVersion test2 = TransportVersion.fromBufferedReader( + "", + "testSupports3", + false, + true, + new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data2), StandardCharsets.UTF_8)), + 5000000 + ); + assertThat(new TransportVersion(null, 1000000, null).supports(test2), is(true)); + + byte[] data3 = ("#comment" + System.lineSeparator() + "# comment3" + System.lineSeparator() + "1000000").getBytes( + StandardCharsets.UTF_8 + ); + TransportVersion test3 = TransportVersion.fromBufferedReader( + "", + "testSupports3", + false, + true, + new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data3), StandardCharsets.UTF_8)), + 5000000 + ); + assertThat(new TransportVersion(null, 1000000, null).supports(test3), is(true)); + } }