最近,我使用 HAProxy 在一台机器上配置了两个 Tomcat(A 和 B)的集群(一切正常)。我已经在两个 Web 服务器中部署了 Geonetwork WAR。我启动 Tomcat A 没有问题,但是当启动 Tomcat B 时,当它的“geonetwork.war”尝试访问 Lucen 索引时出现错误,当 Tomcat A 启动时,由于 write.lock 生成了一个锁(我想)。
错误获取如下:
2016-11-22 20:47:59,700 错误 [geonetwork.index] - 打开分类阅读器/编写器 org.apache.lucene.store.LockObtainFailedException 时发生错误:锁定获取超时:NativeFSLock@/data/geonetwork/geonetwork_data_agrologia/ index/taxonomy/write.lock at org.apache.lucene.store.Lock.obtain(Lock.java:89) at org.apache.lucene.index.IndexWriter.(IndexWriter.java:724) at org.apache.lucene .facet.taxonomy.directory.DirectoryTaxonomyWriter.openIndexWriter(DirectoryTaxonomyWriter.java:265) 在 org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.(DirectoryTaxonomyWriter.java:192) 在 org.apache.lucene.facet.taxonomy。 directory.DirectoryTaxonomyWriter.(DirectoryTaxonomyWriter.java:315) 在 org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.(DirectoryTaxonomyWriter.java:332) 在 org.fao.geonet.kernel.search.index.TaxonomyIndexTracker.init(TaxonomyIndexTracker.java:46) 在 org.fao.geonet.kernel.search.index.TaxonomyIndexTracker.(TaxonomyIndexTracker.java:40) 在 org. org.fao.geonet.kernel.search.index.LuceneIndexLanguageTracker.acquire(LuceneIndexLanguageTracker.java:173) 在 org.fao.geonet 的 fao.geonet.kernel.search.index.LuceneIndexLanguageTracker.lazyInit(LuceneIndexLanguageTracker.java:75)。 kernel.search.SearchManager.getIndexReader(SearchManager.java:1407) at org.fao.geonet.kernel.search.SearchManager.getNewIndexReader(SearchManager.java:1411) at org.fao.geonet.kernel.search.SearchManager.getDocsChangeDate( SearchManager.java:1066) 在 org.fao.geonet.kernel.DataManager.init(DataManager.java:240) 在 org.fao.geonet.Geonetwork.start(Geonetwork.java:378) 在 jeeves.server.JeevesEngine.initAppHandler(JeevesEngine.java:454) 在 jeeves.server.JeevesEngine.init(JeevesEngine.java:175) 在 jeeves.server.sources.http.JeevesServlet.init(JeevesServlet.java:82) ) 在 javax.servlet.GenericServlet.init(GenericServlet.java:158) 在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper. java:1099) 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4913) 在 org.apache.catalina.core .StandardContext.startInternal(StandardContext.java:5223) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase。addChildInternal(ContainerBase.java:752) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache .catalina.startup.HostConfig.deployWAR(HostConfig.java:952) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823) at java.util.concurrent.Executors$RunnableAdapter.call(Executors .java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker。在 java.lang.Thread.run(Thread.java:745) 处运行(ThreadPoolExecutor.java:617)728) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) 在 org.apache.catalina.startup.HostConfig $DeployWar.run(HostConfig.java:1823) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java. util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)728) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) 在 org.apache.catalina.startup.HostConfig $DeployWar.run(HostConfig.java:1823) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java. util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)1823) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor) 的 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) .java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)1823) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor) 的 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) .java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)
有没有办法避免 Lucene 锁定或配置 Geonetwork 应用程序以允许在集群/负载平衡时访问这些索引?