Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some exception when installing analysis-ik plugin #1011

Closed
wangqinghuan opened this issue Jan 27, 2019 · 2 comments
Closed

Some exception when installing analysis-ik plugin #1011

wangqinghuan opened this issue Jan 27, 2019 · 2 comments
Labels
bug Something isn't working

Comments

@wangqinghuan
Copy link

Hi
I need to install analysis-ik plugin in elasticsearch and puppet-elastic module support install plugin. So I try following site.pp:

elasticsearch::plugin { 'analysis-ik':
  instances  => ['es-01','es-02'],
  source => 'puppet:///modules/elasticsearch/elasticsearch-analysis-ik-6.1.3.zip',
 # ensure => 'absent'
}

After exectuting 'puppet agent -t', the plugin analysis-ik is successfully installed with lib path '/usr/share/elasticsearch/plugins/analysis-ik' and config path '/etc/elasticsearch/analysis-ik'. However, elasitcsearch instance failed to startup with some exeptions:

java.io.FileNotFoundException: /etc/elasticsearch/es-01/analysis-ik/IKAnalyzer.cfg.xml (No such file or directory)
	at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_191]
	at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_191]
	at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[?:1.8.0_191]
	at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:110) ~[?:?]
	at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:150) ~[?:?]
	at org.wltea.analyzer.cfg.Configuration.<init>(Configuration.java:40) ~[?:?]
	at org.elasticsearch.index.analysis.IkTokenizerFactory.<init>(IkTokenizerFactory.java:15) ~[?:?]
	at org.elasticsearch.index.analysis.IkTokenizerFactory.getIkSmartTokenizerFactory(IkTokenizerFactory.java:23) ~[?:?]
	at org.elasticsearch.index.analysis.AnalysisRegistry.buildMapping(AnalysisRegistry.java:362) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.analysis.AnalysisRegistry.buildTokenizerFactories(AnalysisRegistry.java:177) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.analysis.AnalysisRegistry.build(AnalysisRegistry.java:155) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.IndexService.<init>(IndexService.java:160) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.IndexModule.newIndexService(IndexModule.java:361) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:448) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.indices.IndicesService.verifyIndexMetadata(IndicesService.java:492) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.gateway.Gateway.performStateRecovery(Gateway.java:127) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.gateway.GatewayService$1.doRun(GatewayService.java:224) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:637) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-6.1.3.jar:6.1.3]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_191]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_191]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
[2019-01-27T23:59:26,343][ERROR][o.w.a.d.Monitor          ] /usr/share/elasticsearch/plugins/analysis-ik/config/main.dic (No such file or directory)
java.io.FileNotFoundException: /usr/share/elasticsearch/plugins/analysis-ik/config/main.dic (No such file or directory)
	at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_191]
	at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_191]
	at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[?:1.8.0_191]
	at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:349) ~[?:?]
	at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:151) ~[?:?]
	at org.wltea.analyzer.cfg.Configuration.<init>(Configuration.java:40) ~[?:?]
	at org.elasticsearch.index.analysis.IkTokenizerFactory.<init>(IkTokenizerFactory.java:15) ~[?:?]
	at org.elasticsearch.index.analysis.IkTokenizerFactory.getIkSmartTokenizerFactory(IkTokenizerFactory.java:23) ~[?:?]
	at org.elasticsearch.index.analysis.AnalysisRegistry.buildMapping(AnalysisRegistry.java:362) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.analysis.AnalysisRegistry.buildTokenizerFactories(AnalysisRegistry.java:177) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.analysis.AnalysisRegistry.build(AnalysisRegistry.java:155) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.IndexService.<init>(IndexService.java:160) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.index.IndexModule.newIndexService(IndexModule.java:361) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:448) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.indices.IndicesService.verifyIndexMetadata(IndicesService.java:492) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.gateway.Gateway.performStateRecovery(Gateway.java:127) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.gateway.GatewayService$1.doRun(GatewayService.java:224) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:637) [elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-6.1.3.jar:6.1.3]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_191]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_191]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]

Indeed, the IKAnalyzer.cfg.xml is located in '/etc/elasticsearch/analysis-ik' rather than '/etc/elasticsearch/es-01/analysis-ik'. So es-01 instance failed to locate IKANalyzer.cfg.xml in '/etc/elasticsearch/es-01/analysis-ik'. Similarly, main.dic is located in '/etc/elasticsearch/analysis-ik' rather than '/usr/share/elasticsearch/plugins/analysis-ik/config/'.
Has any config to resolve these awkward situations?

@wangqinghuan
Copy link
Author

I just got some useful info about mulitple instance config from other issues : every instance has its own confdir(in my case, /etc/elasticsearch/es-01/) and puppet-elasticsearch will copy config into per instance configdir. Unfortunately, puppet-elasticsearch could not copy config into my instance confdir. It only creates a empty directory named 'analysis-ik' in '/etc/elasticsearch/es-01/' path without any sub-dirs or files and es instance failed to locate config file.

@tylerjl
Copy link
Contributor

tylerjl commented Jan 28, 2019

Thank you for the report @wangqinghuan, I believe I know where the issue might be. I'll see about writing a failing test and see whether I can come up with a good solution.

@tylerjl tylerjl added the bug Something isn't working label Jan 28, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants