Hao Zhong created LUCENENET-651:
-----------------------------------
Summary: Document skipping on large indexes is broken
Key: LUCENENET-651
URL: https://issues.apache.org/jira/browse/LUCENENET-651
Project: Lucene.Net
Issue Type: Bug
Components: Lucene.Net Core
Affects Versions: Lucene.Net 5.0 PCL
Reporter: Hao Zhong
I foundd an unfixed bug. The bug was reported to lucene:
https://issues.apache.org/jira/browse/LUCENE-7440
The commit of this bug is as follows:
[https://github.com/apache/lucene/commit/c929d0595c0ad2ef311054746dc24aa8704f55e6]
The key patch is as follows:
numSkipped[level] += skipInterval[level];
{color:#000000}- {color}
{color:#000000}- if (numSkipped[level] > docCount) {{color}
{color:#000000}+{color}
{color:#000000}+ // numSkipped may overflow a signed int, so compare as
unsigned.{color}
{color:#000000}+ if (Integer.compareUnsigned(numSkipped[level], docCount) > 0)
{{color}
The code of lucene.net still uses the buggy check:
public abstract class MultiLevelSkipListReader : IDisposable
{...
private bool LoadNextSkip(int level)
{...
if (numSkipped[level] > docCount)
{...
}
}
The above code can have an identical bug.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)