Solr полный импорт с многоядерным

Я пытаюсь создать машину Solr с несколькими ядрами. На данный момент моя проблема заключается в выполнении первоначального полного импорта. Первое ядро ​​импортирует отлично. Однако, когда я пытаюсь импортировать второе ядро, я получаю следующую ошибку:

org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/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>
Другие вопросы по тегам