2013-02-25 123 views
2

我正嘗試創建具有多個核心的Solr機器。 目前,我的問題是執行初始完全導入。第一個核心進口完美。然而,當我嘗試導入第二個核心,我得到以下錯誤:Solr完全導入多核心

org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: [email protected]/home/solr/solr/data/index/write.lock 
     at org.apache.lucene.store.Lock.obtain(Lock.java:84) 
     at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:602) 
     at org.apache.solr.update.SolrIndexWriter.<init>(SolrIndexWriter.java:75) 
     at org.apache.solr.update.SolrIndexWriter.create(SolrIndexWriter.java:62) 
     at org.apache.solr.update.DefaultSolrCoreState.createMainIndexWriter(DefaultSolrCoreState.java:191) 
     at org.apache.solr.update.DefaultSolrCoreState.getIndexWriter(DefaultSolrCoreState.java:77) 
     at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:157) 
     at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:61) 
     at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51) 
     at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:432) 
     at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:557) 
     at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:325) 
     at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100) 
     at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:70) 
     at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:233) 
     at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:507) 
     at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:411) 
     at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:326) 
     at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:234) 
     at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:382) 
     at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:448) 
     at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:429) 
Feb 25, 2013 11:54:30 AM org.apache.solr.handler.dataimport.DocBuilder execute 

這發生在第二個內核,無論對我下手哪一個。 我在這裏錯過了什麼?每個核心都可以完美運行。

回答

1

這是因爲兩個內核的索引目錄是相同的。只要您爲一個內核啓動完全導入,那麼該目錄中就會有一個write.lock文件,直到導入完成後纔會被刪除。您無論如何都希望將核心的索引保留在單獨的目錄中,因此請修改solrconfig.xml,如下所示:

<!-- Used to specify an alternate directory to hold all index data 
     other than the default ./data under the Solr home. 
     If replication is in use, this should match the replication 
     configuration. --> 
    <dataDir>./data/${solr.core.name}</dataDir>