FAQ
Fairly certain it belongs in the dev-list because it is a bug...

The index length is a long, but the left size will be truncated in
int math before it is converted to a long and compared.
On Jan 13, 2009, at 11:36 PM, Otis Gospodnetic (JIRA) wrote:


[ https://issues.apache.org/jira/browse/LUCENE-1519?
page=com.atlassian.jira.plugin.system.issuetabpanels:comment-
tabpanel&focusedCommentId=12663633#action_12663633 ]

Otis Gospodnetic commented on LUCENE-1519:
------------------------------------------

Deepak - could you please bring this up on the java-user mailing
list instead and close this issue?

Change Primitive Data Types from int to long in class
SegmentMerger.java
---------------------------------------------------------------------
---

Key: LUCENE-1519
URL: https://issues.apache.org/jira/browse/
LUCENE-1519
Project: Lucene - Java
Issue Type: Bug
Affects Versions: 2.4
Environment: lucene 2.4.0, jdk1.6.0_03/07/11
Reporter: Deepak
Original Estimate: 4h
Remaining Estimate: 4h

Hi
We are getting an exception while optimize. We are getting this
exception "mergeFields produced an invalid result: docCount is
385282378 but fdx file size is 3082259028; now aborting this merge
to prevent index corruption"

I have checked the code for class SegmentMerger.java and found
this check
*********************************************************************
*********************************************************************
*****************************
if (4+docCount*8 != fdxFileLength)
// This is most likely a bug in Sun JRE 1.6.0_04/_05;
// we detect that the bug has struck, here, and
// throw an exception to prevent the corruption from
// entering the index. See LUCENE-1282 for
// details.
throw new RuntimeException("mergeFields produced an
invalid result: docCount is " + docCount + " but fdx file size is
" + fdxFileLength + "; now aborting this merge to prevent index
corruption");
}
*********************************************************************
*********************************************************************
*****************************
In our case docCount is 385282378 and fdxFileLength size is
3082259028, even though 4+385282378*8 is equal to 3082259028, the
above code will not work because number 3082259028 is out of int
range. So type of variable docCount needs to be changed to long
I have written a small test for this
*********************************************************************
*********************************************************************
******************************
public class SegmentMergerTest {
public static void main(String[] args) {
int docCount = 385282378;
long fdxFileLength = 3082259028L;
if(4+docCount*8 != fdxFileLength)
System.out.println("No Match" + (4+docCount*8));
else
System.out.println("Match" + (4+docCount*8));
}
}
*********************************************************************
*********************************************************************
******************************
Above test will print No Match but if you change the data type of
docCount to long, it will print Match
Can you please advise us if this issue will be fixed in next release?
Regards
Deepak
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 10 | next ›
Discussion Overview
groupdev @
categorieslucene
postedJan 14, '09 at 5:17a
activeFeb 19, '09 at 10:09a
posts10
users2
websitelucene.apache.org

People

Translate

site design / logo © 2021 Grokbase