当前位置: 首页 > 面试题库 >

Java7“ Solr / Lucene”错误的严重程度如何?

高修伟
2023-03-14
问题内容

显然,Java7在循环优化方面存在一些讨厌的错误:Google搜索。

从报告和错误描述中,我很难判断该错误的重要性(除非您使用Solr或Lucene)。

我想知道的是:

  • 我的(任何)程序受到影响的可能性有多大?
  • 错误的确定性是否足以正常测试将其捕获?

注意:我不能让程序的用户使用-XX:-UseLoopPredicate该问题。


问题答案:

任何热点错误的问题在于,您需要先达到编译阈值(例如10000),然后才能获取它:因此,如果您的单元测试“琐碎”,则您可能会捉住它。

例如,我们在Lucene中捕获了不正确的结果问题,因为此特定测试创建了20,000个文档索引。

在我们的测试中,我们对不同的接口(例如,不同的Directory实现)和索引参数等进行随机化,并且测试仅在1%的时间内失败,当然,然后可以使用相同的随机种子进行重现。我们还在测试创建的每个索引上运行checkindex,它们会进行一些完整性测试以确保索引没有损坏。

对于我们发现的测试,如果您具有特定的配置:例如RAMDirectory + PulsingCodec
+为该字段存储的有效负载,则在达到编译阈值后,发布中的枚举循环将返回错误的计算结果,在这种情况下,返回的文档数对于术语!=为该术语存储的docFreq。

我们有大量的压力测试,重要的是要注意此测试中的正常断言实际上已经通过,它的checkindex部分在失败的末尾。

这样做的最大问题是,lucene的增量索引从根本上是通过将多个段合并为一个片段来工作的:因此,如果这些枚举计算出无效数据,则该无效数据将被 存储
到新合并的索引中:aka腐败。

我想说这个错误比我们之前遇到的以前的循环优化器热点错误(例如,符号翻转的东西,https://issues.apache.org/jira/browse/LUCENE-2975)要狡猾得多。在那种情况下,我们得到了古怪的负文档增量,这很容易捕获。我们还只需要手动展开一个方法即可躲避它。另一方面,我们最初进行的唯一“测试”是对http://www.pangaea.de/的
10GB巨大索引,因此将其范围缩小到此bug很痛苦。

在这种情况下,我花费了大量时间(例如,上周的每个晚上)尝试手动展开/内联各种内容,尝试创建一些解决方法,以便我们可以躲避该错误并避免创建损坏的索引。我可以避开某些情况,但是还有更多我无法解决的情况…而且我敢肯定,如果我们可以在测试中触发这种情况,那么还有更多的情况…



 类似资料:
  • Apache Lucene and Solr have separate repositories now! Solr has become a top-level Apache project and main linedevelopment for Lucene and Solr is happening in eachproject's git repository now: Lucene:

  • 问题内容: 我知道Lucene和Solr是两个不同的Apache项目,它们可以一起工作,但是我不明白每个项目的目的是什么。 据我所知,到目前为止,Lucene用于创建搜索索引,Solr使用该索引执行搜索。我是对的还是这是完全不同的方法? 问题答案: @darkheir:Lucene和Solr是两个可以一起工作的Apache项目,我不明白每个项目的目的是什么。 1)Solr在引擎盖下使用Lucene

  • 我知道Lucene和Solr是两个不同的Apache项目,它们是一起工作的,但我不明白每个项目的目标是什么。 到目前为止,我所理解的是,Lucene用于创建搜索索引,而Solr使用该索引执行搜索。我是对的还是这是一个完全不同的方法?

  • 本文向大家介绍BUG严重程度有哪些?相关面试题,主要包含被问及BUG严重程度有哪些?时的应答技巧和注意事项,需要的朋友参考一下 致命 严重 一般 轻微 建议

  • 我打开Visual Studio 2012,然后转到数据库资源管理器。我打开数据库,当我打开其中一个存储过程时,出现了一个错误。这是一个严重错误,每次打开存储过程时都必须关闭Visual Studio。我什么都做不了。 请帮帮忙,

  • 问题内容: 我试图更新几个我的jenkins插件(不记得是哪个),但是被挂了。大约15分钟后,我决定重新启动jenkins服务器。这是我在詹金斯UI上得到的: 我试图将战争从1.486更新为1.502,但行为没有变化。如何使Jenkins重新运作? 问题答案: 这是一个已知的错误。 复制/粘贴以供参考: 在干净的家庭目录上启动1.490,然后要求将Maven插件升级到版本1.491,然后重新启动。