Closed coolwine closed 6 years ago
윈도우즈에서 사용하시는군요. 사실 제가 윈도우즈 시스템을 잘 몰라서 정확한 문제가 무엇인지 알기 힘든데요,
[?:1.8.0_141] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141] Caused by:
java.security.AccessControlException: access denied ("java.io.FilePermission"
"C:\Program%20Files\Elastic\Elasticsearch \plugins\elasticsearch-analysis-openkoreantext\dic"
"read") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
이 라인이 문제인거 같아요. FilePermission
문제라고 나오는군요,
플러그인이 실행할 때, ${ES_HOME}/plugins/elasticsearch-analysis-openkoreantext/dic
에 있는 사전파일을 읽는데요, 이 패스에 대한 권한이 ES 실행자 권한이랑 다른게 아닌가 일단 추측되구요.
가능성은 적어보이지만, C:\Program%20Files\Elastic\Elasticsearch \plugins\elasticsearch-analysis-openkoreantext\dic
를 읽고있는데 \Elasticsearch \plugins\
사이에 띄워쓰기 공백이 하나 있거든요. 혹시 여기도 의심할 여지가 있지 않을까요?
말씀하신 권한문제가 맞는것 같은데 윈도우로 온갖 권한을 줘봐도 에러는 같았습니다.
비슷한 문제를 보고 찾아보았습니다.
plugin 폴더를 살펴보니 다른 폴더에는 plugin-security.policy
파일이 있었습니다.
그래서 그 파일을 elasticsearch-analysis-openkoreantext 디렉토리로 복사해서 다음과 같이 편집했습니다.
grant { permission java.lang.RuntimePermission "createClassLoader"; permission java.lang.RuntimePermission "elasticsearch-analysis-openkoreantext"; permission org.elasticsearch.script.ClassPermission "org.elasticsearch.plugin.analysis.openkoreantext.AnalysisOpenKoreanTextPlugin"; permission java.io.FilePermission "C:\Program%20Files\Elastic\Elasticsearch\plugins\elasticsearch-analysis-openkoreantext\dic", "read,write"; };
자바를 몰라 저렇게 편집해놓고 실행해도 에러는 같았습니다.
저 파일이 문제의 원인이 될까요?
혹시 \dic 패스를 elasticsearch를 실행시키는 계정 소유로 주고, 읽고, 쓰게 다 권한을 주셨나요?, 혹시 system admin 소유로 되어있는건 아닌지요?
현재 권한은 로컬계정으로 모두 실행 및 할당 하였습니다.
확인해보니, 말씀하신대로 별도의 permission policy file이 필요한 듯 보입니다. https://www.elastic.co/guide/en/elasticsearch/plugins/2.2/plugin-authors.html#_java_security_permissions
일단 해방 부분을 plugin에 넣고 추가 작업해야할거 같구요, 업데이트 되기 전 급하게 사용하기 위해선 몇가지 옵션이 있는 듯 보이네요,
https://stackoverflow.com/questions/35401917/reading-a-file-in-an-elasticsearch-plugin
그렇군요 잠깐 해보니 -D 옵션은 안되는것 같구
어서 업데이트 되길 바랄게요
감사합니다.
열어놓을께요~ 업데이트 후 노티하겠습니다.
@coolwine 제 작업환경에서 재현하기가 어렵네요.
\plugins\elasticsearch-analysis-openkoreantext\
밑에 plugin-security.policy
을 만들고
grant {
permission java.io.FilePermission "dic", "read";
};
를 작성해서 실행해보시겠어요?
혹시 "dic"아 안된다면 해당 위치에 절대경로를 넣어서 실행했을 때, 문제 없는지 확인 부탁드립니다.
말씀하신 사항들 적용했지만 에러메시지는 같네요
다른 방법을 찾아봐야겠네요ㅠ
네, 한 번 찾아보겠습니다, 일단 5.5.2 용 새 버젼에는 해당 이슈 발생시 로깅만 하고 실행은 되도록 해놨습니다.
넵 감사합니다
{ "name": "dwkim02", "cluster_name": "elasticsearch", "cluster_uuid": "44NEWUJLRT-9EKGDLkh5pg", "version": { "number": "5.5.1", "build_hash": "19c13d0", "build_date": "2017-07-18T20:44:24.823Z", "build_snapshot": false, "lucene_version": "6.6.0" }, "tagline": "You Know, for Search" }
엘라스틱서치는 5.5.1 버전을 쓰고 있고 openkoreantext 2.1.0 버전입니다.
curl -X POST 'http://localhost:9200/_analyze' -d '{ "analyzer": "openkoreantext-analyzer", "text": "한국어를 처리하는 예시입니닼ㅋㅋ" }'
를 실행하여 테스트를 진행하면 다음과 같은 에러가 발생합니다...
어떤게 원인인지 알 수 있을까요?
[2017-08-04T17:42:26,857][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [dwkim02] fatal error in thread [elasticsearch[dwkim 02][index][T#2]], exiting java.lang.ExceptionInInitializerError: null at org.elasticsearch.index.analysis.OpenKoreanTextAnalyzerProvider.<init>(OpenKoreanTextAnalyzerProvider.java:16) ~[?:?] at org.elasticsearch.indices.analysis.AnalysisModule$AnalysisProvider.get(AnalysisModule.java:395) ~[elasticsearch-5.5.1.j ar:5.5.1] at org.elasticsearch.index.analysis.AnalysisRegistry.lambda$getAnalyzer$0(AnalysisRegistry.java:130) ~[elasticsearch-5.5.1 .jar:5.5.1] at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[?:1.8.0_141] at org.elasticsearch.index.analysis.AnalysisRegistry.getAnalyzer(AnalysisRegistry.java:128) ~[elasticsearch-5.5.1.jar:5.5. 1] at org.elasticsearch.action.admin.indices.analyze.TransportAnalyzeAction.analyze(TransportAnalyzeAction.java:169) ~[elasti csearch-5.5.1.jar:5.5.1] at org.elasticsearch.action.admin.indices.analyze.TransportAnalyzeAction.shardOperation(TransportAnalyzeAction.java:157) ~ [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.action.admin.indices.analyze.TransportAnalyzeAction.shardOperation(TransportAnalyzeAction.java:77) ~[ elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.action.support.single.shard.TransportSingleShardAction$ShardTransportHandler.messageReceived(Transpor tSingleShardAction.java:294) ~[elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.action.support.single.shard.TransportSingleShardAction$ShardTransportHandler.messageReceived(Transpor tSingleShardAction.java:287) ~[elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33) ~[elasticsearch-5. 5.1.jar:5.5.1] at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69) ~[elasticsear ch-5.5.1.jar:5.5.1] at org.elasticsearch.transport.TransportService$7.doRun(TransportService.java:644) ~[elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:638) ~[elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-5.5.1.jar:5.5.1 ] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_141] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_141] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141] Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Program%20Files\Elastic\Elasticsearch \plugins\elasticsearch-analysis-openkoreantext\dic" "read") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) ~[?:1.8.0_141] at java.security.AccessController.checkPermission(AccessController.java:884) ~[?:1.8.0_141] at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) ~[?:1.8.0_141] at java.lang.SecurityManager.checkRead(SecurityManager.java:888) ~[?:1.8.0_141] at java.io.File.isDirectory(File.java:844) ~[?:1.8.0_141] at org.apache.lucene.analysis.ko.UserDictionaryLoader.<clinit>(UserDictionaryLoader.java:30) ~[?:?] ... 18 more