Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene opengrok真的需要一个单独的暂存目录吗?_Lucene_Race Condition_Opengrok - Fatal编程技术网

Lucene opengrok真的需要一个单独的暂存目录吗?

Lucene opengrok真的需要一个单独的暂存目录吗?,lucene,race-condition,opengrok,Lucene,Race Condition,Opengrok,在示例安装和配置说明中,似乎有人建议OpenGrok需要两个暂存区域,其基本原理是,一个区域是索引重新生成工作区域,另一个是生产区域,它们随着每个索引重新生成而旋转 这真的有必要吗?我只能有一个区域而不是两个区域吗 我正在寻找一个特定于opengrok的答案,而不是一个可能遇到的种族条件的一般列表。严格地说,这是没有必要的。事实上,我非常确定绝大多数部署都没有临时区域 这就是说,您需要决定是否对可能导致某些搜索失败/不精确的不一致窗口感到满意。让我们假设源代码已经更新(例如,在git的情况下,通

在示例安装和配置说明中,似乎有人建议OpenGrok需要两个暂存区域,其基本原理是,一个区域是索引重新生成工作区域,另一个是生产区域,它们随着每个索引重新生成而旋转

这真的有必要吗?我只能有一个区域而不是两个区域吗


我正在寻找一个特定于opengrok的答案,而不是一个可能遇到的种族条件的一般列表。

严格地说,这是没有必要的。事实上,我非常确定绝大多数部署都没有临时区域

这就是说,您需要决定是否对可能导致某些搜索失败/不精确的不一致窗口感到满意。让我们假设源代码已经更新(例如,在git的情况下,通过
git pull
),并且索引器还没有完成对新更改的处理。因此,索引仍然包含反映源的旧状态的数据。假设应用于源的更改删除了一个文件。现在,如果有人启动与删除文件内容匹配的搜索,搜索结果可能会以错误结束。这可能是更好的选择——考虑当对文件进行更微妙的更改时,例如删除/添加几行代码。在这种情况下,符号定义将被关闭,因此搜索结果会将您带到错误的代码行。或者,不太细微的更改,例如从文件中删除函数定义时,此函数引用的搜索结果将包含无效位置

不一致窗口的长度来源于索引时间,这在很大程度上取决于两件事,至少目前是这样:

  • 应用于源的更改的大小
  • 源目录树的大小
第一个是相关的,因为历史处理。传入的历史记录更改越多(例如Git中的变更集),索引器为索引生成历史缓存和/或历史记录字段所需的工作就越多(假设启用了历史处理)


第二个是相关的,因为索引器遍历整个源目录树,以找出哪些文件已更改,这些文件可能会引起大量系统调用和潜在的大量I/O。至少在实现之前,这将只对基于更改集的源代码管理系统有所帮助。

您所说的区域是什么意思?您是在谈论机器吗?请遵循此处的
stage
变量: