From 7439c765ace67e4a4b970782839e8c1781791fa2 Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Mon, 14 Jun 2021 15:03:11 +0100 Subject: [PATCH 1/4] Deprecate setting version on analyzers --- .../common/ArabicAnalyzerProvider.java | 1 - .../common/ArmenianAnalyzerProvider.java | 1 - .../common/BasqueAnalyzerProvider.java | 1 - .../common/BengaliAnalyzerProvider.java | 1 - .../common/BrazilianAnalyzerProvider.java | 1 - .../common/BulgarianAnalyzerProvider.java | 1 - .../common/CatalanAnalyzerProvider.java | 1 - .../common/ChineseAnalyzerProvider.java | 1 - .../analysis/common/CjkAnalyzerProvider.java | 1 - .../common/CzechAnalyzerProvider.java | 1 - .../common/DanishAnalyzerProvider.java | 1 - .../common/DutchAnalyzerProvider.java | 1 - .../common/EnglishAnalyzerProvider.java | 1 - .../common/EstonianAnalyzerProvider.java | 1 - .../common/FinnishAnalyzerProvider.java | 1 - .../common/FrenchAnalyzerProvider.java | 1 - .../common/GalicianAnalyzerProvider.java | 1 - .../common/GermanAnalyzerProvider.java | 1 - .../common/GreekAnalyzerProvider.java | 1 - .../common/HindiAnalyzerProvider.java | 1 - .../common/HungarianAnalyzerProvider.java | 1 - .../common/IndonesianAnalyzerProvider.java | 1 - .../common/IrishAnalyzerProvider.java | 1 - .../common/ItalianAnalyzerProvider.java | 1 - .../common/LatvianAnalyzerProvider.java | 1 - .../common/LithuanianAnalyzerProvider.java | 1 - .../common/NorwegianAnalyzerProvider.java | 1 - .../common/PersianAnalyzerProvider.java | 1 - .../common/PortugueseAnalyzerProvider.java | 1 - .../common/RomanianAnalyzerProvider.java | 1 - .../common/RussianAnalyzerProvider.java | 1 - .../common/SnowballAnalyzerProvider.java | 1 - .../common/SoraniAnalyzerProvider.java | 1 - .../common/SpanishAnalyzerProvider.java | 1 - .../common/SwedishAnalyzerProvider.java | 1 - .../analysis/common/ThaiAnalyzerProvider.java | 1 - .../common/TurkishAnalyzerProvider.java | 1 - .../analysis/pl/PolishAnalyzerProvider.java | 1 - .../analysis/UkrainianAnalyzerProvider.java | 1 - .../AbstractIndexAnalyzerProvider.java | 5 +---- .../analysis/AbstractTokenFilterFactory.java | 8 +------- .../analysis/AbstractTokenizerFactory.java | 8 ++------ .../index/analysis/Analysis.java | 20 +++++++++---------- .../analysis/SimpleAnalyzerProvider.java | 1 - .../analysis/StandardAnalyzerProvider.java | 1 - .../index/analysis/StopAnalyzerProvider.java | 1 - .../analysis/WhitespaceAnalyzerProvider.java | 1 - .../index/analysis/AnalysisTests.java | 5 ++++- .../indices/analysis/AnalysisModuleTests.java | 16 +-------------- 49 files changed, 19 insertions(+), 86 deletions(-) diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/ArabicAnalyzerProvider.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/ArabicAnalyzerProvider.java index e6ba3bc91be75..ef373ae2d4225 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/ArabicAnalyzerProvider.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/ArabicAnalyzerProvider.java @@ -26,7 +26,6 @@ public class ArabicAnalyzerProvider extends AbstractIndexAnalyzerProvider extends private final String name; - protected final Version version; - /** * Constructs a new analyzer component, with the index name and its settings and the analyzer name. * @@ -29,7 +26,7 @@ public abstract class AbstractIndexAnalyzerProvider extends public AbstractIndexAnalyzerProvider(IndexSettings indexSettings, String name, Settings settings) { super(indexSettings); this.name = name; - this.version = Analysis.parseAnalysisVersion(this.indexSettings, settings, logger); + Analysis.checkForDeprecatedVersion(name, settings); } /** diff --git a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java index 16bd4a517bea9..ba33aca912ac4 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java @@ -17,20 +17,14 @@ public abstract class AbstractTokenFilterFactory extends AbstractIndexComponent private final String name; - protected final Version version; - public AbstractTokenFilterFactory(IndexSettings indexSettings, String name, Settings settings) { super(indexSettings); this.name = name; - this.version = Analysis.parseAnalysisVersion(indexSettings, settings, logger); + Analysis.checkForDeprecatedVersion(name, settings); } @Override public String name() { return this.name; } - - public final Version version() { - return version; - } } diff --git a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java index a2740c2aa455d..7040eb6eef379 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java @@ -14,19 +14,15 @@ import org.elasticsearch.index.IndexSettings; public abstract class AbstractTokenizerFactory extends AbstractIndexComponent implements TokenizerFactory { - protected final Version version; + private final String name; public AbstractTokenizerFactory(IndexSettings indexSettings, Settings settings, String name) { super(indexSettings); - this.version = Analysis.parseAnalysisVersion(indexSettings, settings, logger); + Analysis.checkForDeprecatedVersion(name, settings); this.name = name; } - public final Version version() { - return version; - } - @Override public String name() { return name; diff --git a/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java b/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java index 8e1e003131697..a535f878f366c 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java @@ -46,6 +46,8 @@ import org.apache.lucene.analysis.tr.TurkishAnalyzer; import org.apache.lucene.util.Version; import org.elasticsearch.common.Strings; +import org.elasticsearch.common.logging.DeprecationCategory; +import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; @@ -69,19 +71,17 @@ public class Analysis { - public static Version parseAnalysisVersion(IndexSettings indexSettings, Settings settings, Logger logger) { - // check for explicit version on the specific analyzer component + private static final DeprecationLogger DEPRECATION_LOGGER = DeprecationLogger.getLogger(Analysis.class); + + public static void checkForDeprecatedVersion(String name, Settings settings) { String sVersion = settings.get("version"); if (sVersion != null) { - return Lucene.parseVersion(sVersion, Version.LATEST, logger); - } - // check for explicit version on the index itself as default for all analysis components - sVersion = indexSettings.getSettings().get("index.analysis.version"); - if (sVersion != null) { - return Lucene.parseVersion(sVersion, Version.LATEST, logger); + DEPRECATION_LOGGER.deprecate( + DeprecationCategory.ANALYSIS, + "analyzer.version", + "Setting [version] on analysis component [" + name + "] has no effect and is deprecated" + ); } - // resolve the analysis version based on the version the index was created with - return indexSettings.getIndexVersionCreated().luceneVersion; } public static CharArraySet parseStemExclusion(Settings settings, CharArraySet defaultStemExclusion) { diff --git a/server/src/main/java/org/elasticsearch/index/analysis/SimpleAnalyzerProvider.java b/server/src/main/java/org/elasticsearch/index/analysis/SimpleAnalyzerProvider.java index ff4d81c692227..080daf4e4c1c3 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/SimpleAnalyzerProvider.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/SimpleAnalyzerProvider.java @@ -20,7 +20,6 @@ public class SimpleAnalyzerProvider extends AbstractIndexAnalyzerProvider wordList = Analysis.getWordList(env, nodeSettings, "foo.bar"); assertEquals(Arrays.asList("hello", "world"), wordList); - } } diff --git a/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java b/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java index 58ee159369a4a..7fb8c02a6d733 100644 --- a/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java +++ b/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java @@ -131,22 +131,8 @@ public void testVersionedAnalyzers() throws Exception { AnalysisRegistry newRegistry = getNewRegistry(settings2); IndexAnalyzers indexAnalyzers = getIndexAnalyzers(newRegistry, settings2); - // registry always has the current version - assertThat(newRegistry.getAnalyzer("default"), is(instanceOf(NamedAnalyzer.class))); - NamedAnalyzer defaultNamedAnalyzer = (NamedAnalyzer) newRegistry.getAnalyzer("default"); - assertThat(defaultNamedAnalyzer.analyzer(), is(instanceOf(StandardAnalyzer.class))); - assertEquals(Version.CURRENT.luceneVersion, defaultNamedAnalyzer.analyzer().getVersion()); - - // analysis service has the expected version - assertThat(indexAnalyzers.get("standard").analyzer(), is(instanceOf(StandardAnalyzer.class))); - assertEquals(version.luceneVersion, - indexAnalyzers.get("standard").analyzer().getVersion()); - assertEquals(version.luceneVersion, - indexAnalyzers.get("stop").analyzer().getVersion()); - assertThat(indexAnalyzers.get("custom7").analyzer(), is(instanceOf(StandardAnalyzer.class))); - assertEquals(org.apache.lucene.util.Version.fromBits(3,6,0), - indexAnalyzers.get("custom7").analyzer().getVersion()); + assertWarnings("Setting [version] on analysis component [custom7] has no effect and is deprecated"); } private void testSimpleConfiguration(Settings settings) throws IOException { From 16374b03007ffa8eec76618ed10f862930c470b7 Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Mon, 14 Jun 2021 16:22:20 +0100 Subject: [PATCH 2/4] test is still using deprecated yaml --- .../org/elasticsearch/analysis/common/CompoundAnalysisTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/CompoundAnalysisTests.java b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/CompoundAnalysisTests.java index 53c6d9abc1c6b..fcbfb65267eb7 100644 --- a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/CompoundAnalysisTests.java +++ b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/CompoundAnalysisTests.java @@ -55,6 +55,7 @@ public void testDictionaryDecompounder() throws Exception { MatcherAssert.assertThat(terms, hasItems("donau", "dampf", "schiff", "donaudampfschiff", "spargel", "creme", "suppe", "spargelcremesuppe")); } + assertWarnings("Setting [version] on analysis component [custom7] has no effect and is deprecated"); } private List analyze(Settings settings, String analyzerName, String text) throws IOException { From ab3f58cba839854545b3a45a4b3dbe746363e9c5 Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Mon, 14 Jun 2021 16:38:43 +0100 Subject: [PATCH 3/4] imports --- .../index/analysis/AbstractTokenFilterFactory.java | 1 - .../index/analysis/AbstractTokenizerFactory.java | 1 - .../main/java/org/elasticsearch/index/analysis/Analysis.java | 4 ---- .../java/org/elasticsearch/index/analysis/AnalysisTests.java | 4 ---- .../elasticsearch/indices/analysis/AnalysisModuleTests.java | 1 - 5 files changed, 11 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java index ba33aca912ac4..4c96d090dfc02 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenFilterFactory.java @@ -8,7 +8,6 @@ package org.elasticsearch.index.analysis; -import org.apache.lucene.util.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.AbstractIndexComponent; import org.elasticsearch.index.IndexSettings; diff --git a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java index 7040eb6eef379..7f3472291bafc 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/AbstractTokenizerFactory.java @@ -8,7 +8,6 @@ package org.elasticsearch.index.analysis; -import org.apache.lucene.util.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.AbstractIndexComponent; import org.elasticsearch.index.IndexSettings; diff --git a/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java b/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java index a535f878f366c..a42e32f3a9a60 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/Analysis.java @@ -8,7 +8,6 @@ package org.elasticsearch.index.analysis; -import org.apache.logging.log4j.Logger; import org.apache.lucene.analysis.CharArraySet; import org.apache.lucene.analysis.ar.ArabicAnalyzer; import org.apache.lucene.analysis.bg.BulgarianAnalyzer; @@ -44,14 +43,11 @@ import org.apache.lucene.analysis.sv.SwedishAnalyzer; import org.apache.lucene.analysis.th.ThaiAnalyzer; import org.apache.lucene.analysis.tr.TurkishAnalyzer; -import org.apache.lucene.util.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; -import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; -import org.elasticsearch.index.IndexSettings; import java.io.BufferedReader; import java.io.IOException; diff --git a/server/src/test/java/org/elasticsearch/index/analysis/AnalysisTests.java b/server/src/test/java/org/elasticsearch/index/analysis/AnalysisTests.java index 2b3e916e39403..341c36d9b61a4 100644 --- a/server/src/test/java/org/elasticsearch/index/analysis/AnalysisTests.java +++ b/server/src/test/java/org/elasticsearch/index/analysis/AnalysisTests.java @@ -8,14 +8,10 @@ package org.elasticsearch.index.analysis; -import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.CharArraySet; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.env.TestEnvironment; -import org.elasticsearch.index.Index; -import org.elasticsearch.index.IndexSettings; -import org.elasticsearch.indices.IndicesModule; import org.elasticsearch.test.ESTestCase; import java.io.BufferedWriter; diff --git a/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java b/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java index 7fb8c02a6d733..f91f96a8686ac 100644 --- a/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java +++ b/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java @@ -33,7 +33,6 @@ import org.elasticsearch.index.analysis.CustomAnalyzer; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.MyFilterTokenFilterFactory; -import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.analysis.PreConfiguredCharFilter; import org.elasticsearch.index.analysis.PreConfiguredTokenFilter; import org.elasticsearch.index.analysis.PreConfiguredTokenizer; From 52dcd2566e697b5492ffc0e6f01c5a323f452f58 Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Mon, 14 Jun 2021 17:07:12 +0100 Subject: [PATCH 4/4] another test with warnings --- .../org/elasticsearch/indices/analysis/AnalysisModuleTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java b/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java index f91f96a8686ac..efec2577973b6 100644 --- a/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java +++ b/server/src/test/java/org/elasticsearch/indices/analysis/AnalysisModuleTests.java @@ -117,6 +117,7 @@ public void testSimpleConfigurationJson() throws IOException { public void testSimpleConfigurationYaml() throws IOException { Settings settings = loadFromClasspath("/org/elasticsearch/index/analysis/test1.yml"); testSimpleConfiguration(settings); + assertWarnings("Setting [version] on analysis component [custom7] has no effect and is deprecated"); } public void testVersionedAnalyzers() throws Exception {