WSO2 企业集成商 - Solr 索引损坏

WSO2 Enterprise Integrator - Solr Index Corrupted

我在 CentOS Linux 7 上有一个 WSO2 EI 6.1.1 运行 的实例,突然它开始在日志中每次都吐出一个 CorruptIndexException: file mismatch 错误我部署任何类型的工件。 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.access1(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.call(CoreContainer.java:381)
    at org.apache.solr.core.CoreContainer.call(CoreContainer.java:375)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.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 的内部工作原理了解不多。

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

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