solr - 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 的内部工作了解不多。
解决方案
似乎注册表索引已损坏或未正确发生。您能否按照以下步骤重新索引注册表,
- 打开 registry.xml 文件,该文件位于
<PRODUCT_HOME>/conf/
. - 改变
lastAccessTimeLocation
如下。前任:/_system/local/repository/components/org.wso2.carbon.registry/indexing/lastaccesstime_1
- 停止服务器,备份并删除
<PRODUCT_HOME>/solr
目录。 - 重新启动服务器并等待几分钟以重新建立索引
推荐阅读
- python - 如何在python中返回通过sklearn的函数KernelDensity估计的分布的平均值(或期望值)?
- google-analytics - 如何在多个域的 vue 应用上实现谷歌分析?
- c# - 如何清除 MVC 中自定义 HandleError 属性的会话?
- angular - 仅当 *ngIf 中的所有选项都不为真时才显示 else 块
- javascript - 从 DynamoDB 获取有限和排序的项目页面?
- rxjs - 基于集合内项目的延迟
- python - 如何安排循环?
- tensorflow - Keras / TF 2019 限制 GPU 内存使用?
- python - 如何使用正则表达式循环过滤特定字符之前和之后的部分句子
- android - 将活动转换为片段时如何修复onOptionsItemSelected