首页 > 解决方案 > WSO2 Enterprise Integrator - Solr 索引已损坏

问题描述

CorruptIndexException: file mismatch我有一个在 CentOS Linux 7 上运行的 WSO2 EI 6.1.1 实例,每次我部署任何类型的工件时,它都会出乎意料地在日志上吐出一个错误。WSO2 实例工作得很好,部署也完成了,但是索引出了点问题。服务器几天前内存不足,所以这可能是相关的。

这是整个例外:

An error occurred while submitting the resource for indexing, path: /_system/config/repository/axis2/service-groups/CES/services/[file] 
org.apache.solr.common.SolrException: SolrCore 'registry-indexing' is not available due to init failure: Error opening new searcher
    at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:884)
    at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:147)
    at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:135)
    at org.apache.solr.client.solrj.SolrClient.deleteById(SolrClient.java:754)
    at org.apache.solr.client.solrj.SolrClient.deleteById(SolrClient.java:717)
    at org.apache.solr.client.solrj.SolrClient.deleteById(SolrClient.java:732)
    at org.wso2.carbon.registry.indexing.solr.SolrClient.deleteFromIndex(SolrClient.java:510)
    at org.wso2.carbon.registry.indexing.IndexingManager.deleteFromIndex(IndexingManager.java:164)
    at org.wso2.carbon.registry.indexing.ResourceSubmitter.submitResource(ResourceSubmitter.java:137)
    at org.wso2.carbon.registry.indexing.ResourceSubmitter.run(ResourceSubmitter.java:76)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    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:748)
Caused by: org.apache.solr.common.SolrException: Error opening new searcher
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:815)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:658)
    at org.apache.solr.core.CoreContainer.create(CoreContainer.java:637)
    at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:381)
    at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:375)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:148)
    ... 3 more
Caused by: org.apache.solr.common.SolrException: Error opening new searcher
    at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1657)
    at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1769)
    at org.apache.solr.core.SolrCore.initSearcher(SolrCore.java:911)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:788)
    ... 9 more
Caused by: org.apache.lucene.index.CorruptIndexException: file mismatch, expected id=3dmwhk1nt61hefvijkvdik5y1, got=eiuu5dyvcfbb1hnk1af9iv2u3 (resource=BufferedChecksumIndexInput(MMapIndexInput(path="/home/dev/esb/wso2ei-6.1.1/solr/data/index/_659.si")))
    at org.apache.lucene.codecs.CodecUtil.checkIndexHeaderID(CodecUtil.java:267)
    at org.apache.lucene.codecs.CodecUtil.checkIndexHeader(CodecUtil.java:257)
    at org.apache.lucene.codecs.lucene50.Lucene50SegmentInfoFormat.read(Lucene50SegmentInfoFormat.java:86)
    at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:326)
    at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:830)
    at org.apache.solr.update.SolrIndexWriter.<init>(SolrIndexWriter.java:78)
    at org.apache.solr.update.SolrIndexWriter.create(SolrIndexWriter.java:65)
    at org.apache.solr.update.DefaultSolrCoreState.createMainIndexWriter(DefaultSolrCoreState.java:273)
    at org.apache.solr.update.DefaultSolrCoreState.getIndexWriter(DefaultSolrCoreState.java:116)
    at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1626)
    ... 12 more
    Suppressed: org.apache.lucene.index.CorruptIndexException: checksum passed (1527bdd6). possibly transient resource issue, or a Lucene or JVM bug (resource=BufferedChecksumIndexInput(MMapIndexInput(path="/home/dev/esb/wso2ei-6.1.1/solr/data/index/_659.si")))
        at org.apache.lucene.codecs.CodecUtil.checkFooter(CodecUtil.java:380)
        at org.apache.lucene.codecs.lucene50.Lucene50SegmentInfoFormat.read(Lucene50SegmentInfoFormat.java:117)
        ... 19 more

我试图搜索如何在 WSO EI 上重置/重新索引,但所有结果都是针对 APIM 或 Analytics,并且文件不匹配。我也尝试过挖掘文件​​,但我对 WSO2 的内部工作了解不多。

标签: solrwso2wso2esbwso2ei

解决方案


似乎注册表索引已损坏或未正确发生。您能否按照以下步骤重新索引注册表,

  1. 打开 registry.xml 文件,该文件位于<PRODUCT_HOME>/conf/.
  2. 改变lastAccessTimeLocation如下。前任:/_system/local/repository/components/org.wso2.carbon.registry/indexing/lastaccesstime_1
  3. 停止服务器,备份并删除 <PRODUCT_HOME>/solr目录。
  4. 重新启动服务器并等待几分钟以重新建立索引

推荐阅读