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

NPE when calling isCurrent() on a ParallellReader

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0, 2.1, 2.2
    • Fix Version/s: None
    • Component/s: core/index
    • Labels:
      None
    • Lucene Fields:
      New

      Description

      As demonstrated by the test case below, if you call isCurrent() on a ParallelReader it causes an NPE. Fix appears to be to add an isCurrent() to ParallelReader which calls it on the underlying indexes but I'm not sure what other problems may be lurking here. Do methods such as getVersion(), lastModified(), isOptimized() also have to be rewritten or is this a use case where ParallelReader will never mimic IndexReader perfectly? At the very least this behavior should be documented so others know what to expect.

      [junit] Testcase: testIsCurrent(org.apache.lucene.index.TestParallelReader): Caused an ERROR
      [junit] null
      [junit] java.lang.NullPointerException
      [junit] at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:502)
      [junit] at org.apache.lucene.index.SegmentInfos.readCurrentVersion(SegmentInfos.java:336)
      [junit] at org.apache.lucene.index.IndexReader.isCurrent(IndexReader.java:316)
      [junit] at org.apache.lucene.index.TestParallelReader.testIsCurrent(TestParallelReader.java:146)

      Index: src/test/org/apache/lucene/index/TestParallelReader.java
      ===================================================================
      — src/test/org/apache/lucene/index/TestParallelReader.java (revision 518122)
      +++ src/test/org/apache/lucene/index/TestParallelReader.java (working copy)
      @@ -135,6 +135,15 @@
      assertEquals(docParallel.get("f4"), docSingle.get("f4"));
      }
      }
      +
      + public void testIsCurrent() throws IOException

      { + Directory dir1 = getDir1(); + Directory dir2 = getDir2(); + ParallelReader pr = new ParallelReader(); + pr.add(IndexReader.open(dir1)); + pr.add(IndexReader.open(dir2)); + assertTrue(pr.isCurrent()); + }

      // Fiels 1-4 indexed together:
      private Searcher single() throws IOException {

      1. lucene-832.patch
        4 kB
        Michael Busch

        Issue Links

          Activity

          Hide
          hossman Hoss Man added a comment -

          shades of LUCENE-781 here.

          Show
          hossman Hoss Man added a comment - shades of LUCENE-781 here.
          Hide
          michaelbusch Michael Busch added a comment -

          This patch fixes ParallelReader similar to LUCENE-781:

          • ParallelReader.getVersion() now throws an
            UnsupportedOperationException.
          • ParallelReader.isOptimized() now checks if all underlying
            indexes are optimized and returns true in such a case.
          • ParallelReader.isCurrent() now checks if all underlying
            IndexReaders are up to date and returns true in such a case.
          • Additional tests in TestParallelReader to test these methods.

          All tests pass. I'm planning to commit this soon...

          Show
          michaelbusch Michael Busch added a comment - This patch fixes ParallelReader similar to LUCENE-781 : ParallelReader.getVersion() now throws an UnsupportedOperationException. ParallelReader.isOptimized() now checks if all underlying indexes are optimized and returns true in such a case. ParallelReader.isCurrent() now checks if all underlying IndexReaders are up to date and returns true in such a case. Additional tests in TestParallelReader to test these methods. All tests pass. I'm planning to commit this soon...
          Hide
          michaelbusch Michael Busch added a comment -

          Committed.

          Show
          michaelbusch Michael Busch added a comment - Committed.

            People

            • Assignee:
              michaelbusch Michael Busch
              Reporter:
              pdlug Paul Dlug
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development