Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-4547

DocValues field broken on large indexes

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 4.2, 6.0
    • None
    • None
    • New

    Description

      I tried to write a test to sanity check LUCENE-4536 (first running against svn revision 1406416, before the change).

      But i found docvalues is already broken here for large indexes that have a PackedLongDocValues field:

      final int numDocs = 500000000;
      for (int i = 0; i < numDocs; ++i) {
        if (i == 0) {
          field.setLongValue(0L); // force > 32bit deltas
        } else {
          field.setLongValue(1<<33L); 
        }
        w.addDocument(doc);
      }
      w.forceMerge(1);
      w.close();
      dir.close(); // checkindex
      
      [junit4:junit4]   2> WARNING: Uncaught exception in thread: Thread[Lucene Merge Thread #0,6,TGRP-Test2GBDocValues]
      [junit4:junit4]   2> org.apache.lucene.index.MergePolicy$MergeException: java.lang.ArrayIndexOutOfBoundsException: -65536
      [junit4:junit4]   2> 	at __randomizedtesting.SeedInfo.seed([5DC54DB14FA5979]:0)
      [junit4:junit4]   2> 	at org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:535)
      [junit4:junit4]   2> 	at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:508)
      [junit4:junit4]   2> Caused by: java.lang.ArrayIndexOutOfBoundsException: -65536
      [junit4:junit4]   2> 	at org.apache.lucene.util.ByteBlockPool.deref(ByteBlockPool.java:305)
      [junit4:junit4]   2> 	at org.apache.lucene.codecs.lucene40.values.FixedStraightBytesImpl$FixedBytesWriterBase.set(FixedStraightBytesImpl.java:115)
      [junit4:junit4]   2> 	at org.apache.lucene.codecs.lucene40.values.PackedIntValues$PackedIntsWriter.writePackedInts(PackedIntValues.java:109)
      [junit4:junit4]   2> 	at org.apache.lucene.codecs.lucene40.values.PackedIntValues$PackedIntsWriter.finish(PackedIntValues.java:80)
      [junit4:junit4]   2> 	at org.apache.lucene.codecs.DocValuesConsumer.merge(DocValuesConsumer.java:130)
      [junit4:junit4]   2> 	at org.apache.lucene.codecs.PerDocConsumer.merge(PerDocConsumer.java:65)
      

      Attachments

        1. LUCENE-4547.patch
          1.86 MB
          Robert Muir
        2. test.patch
          3 kB
          Robert Muir

        Issue Links

          Activity

            People

              Unassigned Unassigned
              rcmuir Robert Muir
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: