From 6fdf06d22a54c00d1a1eb93e686a16783ef17bc6 Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Mon, 28 Jul 2014 14:04:34 +0200 Subject: [PATCH] [CORE] Support alpha/beta releases in version parsing too Pull Request #7055 fixed Version parsing for bugfix releases causing problems with minor version in segments files. Even though we never release anything with lucene in alpha / beta status this commit fixes lenient parsing for these cases. Relates to #7055 --- src/main/java/org/elasticsearch/common/lucene/Lucene.java | 4 +--- src/test/java/org/elasticsearch/VersionTests.java | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/elasticsearch/common/lucene/Lucene.java b/src/main/java/org/elasticsearch/common/lucene/Lucene.java index 30d98f9a7bbca..3b00f04cb8768 100644 --- a/src/main/java/org/elasticsearch/common/lucene/Lucene.java +++ b/src/main/java/org/elasticsearch/common/lucene/Lucene.java @@ -43,8 +43,6 @@ import java.io.IOException; import java.util.Locale; -import static org.elasticsearch.common.lucene.search.NoopCollector.NOOP_COLLECTOR; - /** * */ @@ -422,7 +420,7 @@ public static Version parse(String toParse, Version defaultValue) { } catch (IllegalArgumentException e) { final String parsedMatchVersion = toParse .toUpperCase(Locale.ROOT) - .replaceFirst("^(\\d+)\\.(\\d+).(\\d+)$", "LUCENE_$1_$2"); + .replaceFirst("^(\\d+)\\.(\\d+)(.(\\d+))+$", "LUCENE_$1_$2"); return Version.valueOf(parsedMatchVersion); } } diff --git a/src/test/java/org/elasticsearch/VersionTests.java b/src/test/java/org/elasticsearch/VersionTests.java index 874849ca6fcd3..404de28493724 100644 --- a/src/test/java/org/elasticsearch/VersionTests.java +++ b/src/test/java/org/elasticsearch/VersionTests.java @@ -119,6 +119,9 @@ public void parseLenient() { .replaceFirst("^LUCENE_(\\d+)_(\\d+)$", "$1.$2"); if (randomBoolean()) { string = string + "." + randomIntBetween(0, 100); + if (randomBoolean()) { + string = string + "." + randomIntBetween(0, 100); + } } assertThat(luceneVersion, Matchers.equalTo(Lucene.parseVersionLenient(string, null))); }