You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Otis Gospodnetic (JIRA)" <ji...@apache.org> on 2009/01/14 06:36:59 UTC
[jira] Commented: (LUCENE-1519) Change Primitive Data Types from
int to long in class SegmentMerger.java
[ 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
Re: [jira] Commented: (LUCENE-1519) Change Primitive Data Types from int to long in class SegmentMerger.java
Posted by robert engels <re...@ix.netcom.com>.
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