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

IllegalArgumentException thrown instead of a CorruptIndexException

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 6.5.1
    • 8.6
    • None
    • None
    • New

    Description

      Similarly to LUCENE-7592 , When an *.si file is corrupted on very specific part an IllegalArgumentException is thrown instead of a CorruptIndexException.

      StackTrace (Lucene 6.5.1):

      java.lang.IllegalArgumentException: Illegal minor version: 12517381
      
      	at __randomizedtesting.SeedInfo.seed([1FEB5987CFA44BE:B8755B5574F9F3BF]:0)
      	at org.apache.lucene.util.Version.<init>(Version.java:385)
      	at org.apache.lucene.util.Version.<init>(Version.java:371)
      	at org.apache.lucene.util.Version.fromBits(Version.java:353)
      	at org.apache.lucene.codecs.lucene62.Lucene62SegmentInfoFormat.read(Lucene62SegmentInfoFormat.java:97)
      	at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:357)
      	at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:288)
      	at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:448)
      	at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:445)
      	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:692)
      	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:644)
      	at org.apache.lucene.index.SegmentInfos.readLatestCommit(SegmentInfos.java:450)
      	at org.apache.lucene.index.DirectoryReader.listCommits(DirectoryReader.java:260)
      

      Simple fix would be to add IllegalArgumentException to the catch list at
      org/apache/lucene/index/SegmentInfos.java:289

      Other variations for the stacktraces:

      java.lang.IllegalArgumentException: invalid codec filename '_�.cfs', must match: _[a-z0-9]+(_.*)?\..*
      
      	at __randomizedtesting.SeedInfo.seed([8B3FDE317B8D634A:A8EE07E5EB4B0B13]:0)
      	at org.apache.lucene.index.SegmentInfo.checkFileNames(SegmentInfo.java:270)
      	at org.apache.lucene.index.SegmentInfo.addFiles(SegmentInfo.java:252)
      	at org.apache.lucene.index.SegmentInfo.setFiles(SegmentInfo.java:246)
      	at org.apache.lucene.codecs.lucene62.Lucene62SegmentInfoFormat.read(Lucene62SegmentInfoFormat.java:248)
      	at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:357)
      	at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:288)
      	at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:448)
      	at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:445)
      	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:692)
      	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:644)
      	at org.apache.lucene.index.SegmentInfos.readLatestCommit(SegmentInfos.java:450)
      	at org.apache.lucene.index.DirectoryReader.listCommits(DirectoryReader.java:260)
      
      java.lang.IllegalArgumentException: An SPI class of type org.apache.lucene.codecs.Codec with name 'LucenI62' does not exist.  You need to add the corresponding JAR file supporting this SPI to your classpath.  The current classpath supports the following names: [Lucene62, Lucene50, Lucene53, Lucene54, Lucene60]
      
      	at __randomizedtesting.SeedInfo.seed([925DE160F7260F99:B026EB9373CB6368]:0)
      	at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:116)
      	at org.apache.lucene.codecs.Codec.forName(Codec.java:116)
      	at org.apache.lucene.index.SegmentInfos.readCodec(SegmentInfos.java:424)
      	at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:356)
      	at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:288)
      	at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:448)
      	at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:445)
      	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:692)
      	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:644)
      	at org.apache.lucene.index.SegmentInfos.readLatestCommit(SegmentInfos.java:450)
      	at org.apache.lucene.index.DirectoryReader.listCommits(DirectoryReader.java:260)
      

      Attachments

        1. LUCENE-7822.patch
          7 kB
          Martin Amirault

        Issue Links

          Activity

            People

              Unassigned Unassigned
              marumarutan Martin Amirault
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h