elasticsearch-analysis-turkishstemmer
elasticsearch-analysis-turkishstemmer copied to clipboard
Can't load default exceptions list in TurkishStemmerTokenFilterFactory
It seems that newer version of ES may return null
from Analysis.getWordList()
:
public static List<String> getWordList(Environment env, Settings settings,
String settingPath, String settingList, boolean removeComments) {
String wordListPath = settings.get(settingPath, null);
if (wordListPath == null) {
List<String> explicitWordList = settings.getAsList(settingList, null);
if (explicitWordList == null) {
return null;
//(...)
and this is causing NPE in .isEmpty()
check:
private CharArraySet parseExceptions(Environment env, Settings settings, String settingPrefix) {
List<String> exceptionsList = Analysis.getWordList(env, settings, settingPrefix);
if (exceptionsList.isEmpty()) {
In ES 5.x this was not an issue because getReaderFromFile()
was used and there was a check for null
:
exceptionsReader = Analysis.getReaderFromFile(env, settings, settingPrefix);
} catch (InvalidPathException e) {
logger.info("failed to find the " + settingPrefix + ", using the default set");
}
if (exceptionsReader != null) {
try {
exceptionsList = Analysis.loadWordList(exceptionsReader, "#");
The whole exception:
java.lang.NullPointerException: Cannot invoke "java.util.List.isEmpty()" because "exceptionsList" is null
at org.elasticsearch.index.analysis.TurkishStemmerTokenFilterFactory.parseExceptions(TurkishStemmerTokenFilterFactory.java:98) ~[?:?]
at org.elasticsearch.index.analysis.TurkishStemmerTokenFilterFactory.parseProtectedWords(TurkishStemmerTokenFilterFactory.java:52) ~[?:?]
at org.elasticsearch.index.analysis.TurkishStemmerTokenFilterFactory.<init>(TurkishStemmerTokenFilterFactory.java:30) ~[?:?]
at org.elasticsearch.index.analysis.AnalysisRegistry.buildMapping(AnalysisRegistry.java:444) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.index.analysis.AnalysisRegistry.buildTokenFilterFactories(AnalysisRegistry.java:280) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.index.analysis.AnalysisRegistry.build(AnalysisRegistry.java:215) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.index.IndexModule.newIndexService(IndexModule.java:438) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:655) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.indices.IndicesService.createIndex(IndicesService.java:558) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.metadata.MetadataIndexTemplateService.validateTemplate(MetadataIndexTemplateService.java:1196) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.metadata.MetadataIndexTemplateService.validateTemplate(MetadataIndexTemplateService.java:1149) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.metadata.MetadataIndexTemplateService.addComponentTemplate(MetadataIndexTemplateService.java:265) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.metadata.MetadataIndexTemplateService$2.execute(MetadataIndexTemplateService.java:188) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:47) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.service.MasterService.executeTasks(MasterService.java:702) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.service.MasterService.calculateTaskOutputs(MasterService.java:324) ~[elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.service.MasterService.runTasks(MasterService.java:219) [elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.service.MasterService.access$000(MasterService.java:73) [elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.service.MasterService$Batcher.run(MasterService.java:151) [elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150) [elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188) [elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:684) [elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:252) [elasticsearch-7.10.2.jar:7.10.2]
at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:215) [elasticsearch-7.10.2.jar:7.10.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
at java.lang.Thread.run(Thread.java:832) [?:?]