【问题标题】:Solr Index pull failsSolr 索引拉取失败
【发布时间】:2011-08-30 12:33:05
【问题描述】:

我有 solr 的主从配置。主索引将 24X7 更新。它是一个连续的过程。我的从服务器每 30 分钟后从主服务器拉索引。

问题是由于以下异常,此索引拉取失败

SnapPull 失败:org.apache.solr.common.SolrException:索引获取 失败:在 org.apache.solr.handler.SnapPuller.fetchLatestIndex(SnapPuller.java:329) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 org.apache.solr.handler.ReplicationHandler.doFetch(ReplicationHandler.java:264) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 org.apache.solr.handler.SnapPuller$1.run(SnapPuller.java:159) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) [:1.6.0_26] 在 java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) [:1.6.0_26] 在 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) [:1.6.0_26] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) [:1.6.0_26] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) [:1.6.0_26] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) [:1.6.0_26] 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26] 在 java.lang.Thread.run(Thread.java:662) [:1.6.0_26] 引起:org.apache.lucene.store.LockObtainFailedException: Lock 获取超时: SimpleFSLock@/data/solr/data/index/lucene-47510fa3e31f1e71e7408a128e1ebac1-write.lock 在 org.apache.lucene.store.Lock.obtain(Lock.java:85) [:2.9.3 951790 - 2010-06-06 01:30:55] 在 org.apache.lucene.index.IndexWriter.init(IndexWriter.java:1565) [:2.9.3 951790 - 2010-06-06 01:30:55] 在 org.apache.lucene.index.IndexWriter.(IndexWriter.java:1421) [:2.9.3 951790 - 2010-06-06 01:30:55] 在 org.apache.solr.update.SolrIndexWriter.(SolrIndexWriter.java:191) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 org.apache.solr.update.UpdateHandler.createMainIndexWriter(UpdateHandler.java:98) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 org.apache.solr.update.DirectUpdateHandler2.openWriter(DirectUpdateHandler2.java:173) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 org.apache.solr.update.DirectUpdateHandler2.forceOpenWriter(DirectUpdateHandler2.java:376) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 org.apache.solr.handler.SnapPuller.doCommit(SnapPuller.java:471) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] 在 org.apache.solr.handler.SnapPuller.fetchLatestIndex(SnapPuller.java:319) [:1.4.1 955763M - 标记 - 2010-06-17 18:06:42] ... 11 更多

这个异常是因为 master 上的持续索引更新还是任何其他原因造成的。我怎样才能摆脱这个。

提前致谢。

问候 拉姆

【问题讨论】:

    标签: lucene solr


    【解决方案1】:

    我认为 jpountz 的解释是正确的。我能够通过关闭 solr Web 服务器(在我的情况下为 Jetty)并删除整个 solr 索引目录,然后重新启动来解决此问题。单独删除锁定文件并不能解决问题。

    【讨论】:

      【解决方案2】:

      slave 上的锁 (/data/solr/data/index/lucene-47510fa3e31f1e71e7408a128e1ebac1-write.lock) 存在问题。例如,当 Solr 在打开 IndexWriter 时崩溃时可能会发生这种情况:在以下重新启动后,锁定文件尚未清除,因此 Solr 认为另一个 IndexWriter 正在更新索引并拒绝执行任何更改。

      要解决此错误,您可以:

      • 关闭 Solr,
      • 确保您的目录中没有活动锁定(如有必要,请删除锁定文件),
      • 重新启动 Solr。

      【讨论】:

      • 谢谢jpountz。所以在master上连续写索引不会对slave上的索引复制造成任何问题。
      • 做了同样的事情,但仍然得到同样的异常
      【解决方案3】:

      我也遇到过同样的问题。我解决了,

      1.停止 Solr 和依赖的应用程序

      2.rm -rf /{你的 solr 数据目录的路径}/index.*

      3.rm /{你的 solr 数据目录的路径}/replication.properties

      4.启动 Solr(等待 10-20 分钟根据您的索引数据进行复制)

      检查 Solr 云的状态,并跟踪 solr 的日志文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-02
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多