Recently I configure a Cluster of Two Tomcat (A and B) in one single machine using HAProxy (everything fine). I have deloyed Geonetwork WAR in both Web Servers. I start Tomcat A with no problem, but when start Tomcat B there's an error when its "geonetwork.war" tries to access Lucen indexes, a lock due to write.lock generated (I supose) when Tomcat A started.
The error get is like:
2016-11-22 20:47:59,700 ERROR [geonetwork.index] - An error occurred while openning taxonomy readers/writers org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: 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) at org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.(DirectoryTaxonomyWriter.java:192) at org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.(DirectoryTaxonomyWriter.java:315) at org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.(DirectoryTaxonomyWriter.java:332) at org.fao.geonet.kernel.search.index.TaxonomyIndexTracker.init(TaxonomyIndexTracker.java:46) at org.fao.geonet.kernel.search.index.TaxonomyIndexTracker.(TaxonomyIndexTracker.java:40) at org.fao.geonet.kernel.search.index.LuceneIndexLanguageTracker.lazyInit(LuceneIndexLanguageTracker.java:75) at org.fao.geonet.kernel.search.index.LuceneIndexLanguageTracker.acquire(LuceneIndexLanguageTracker.java:173) at org.fao.geonet.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) at org.fao.geonet.kernel.DataManager.init(DataManager.java:240) at org.fao.geonet.Geonetwork.start(Geonetwork.java:378) at jeeves.server.JeevesEngine.initAppHandler(JeevesEngine.java:454) at jeeves.server.JeevesEngine.init(JeevesEngine.java:175) at jeeves.server.sources.http.JeevesServlet.init(JeevesServlet.java:82) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4913) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5223) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at 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) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
Is there any way to avoid Lucene locks or configure Geonetwork application to permit accessing thos indexes when it is clustered/load balanced?