[jira] [Commented] (LUCENE-7822) IllegalArgumentException thrown instead of a CorruptIndexException

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (LUCENE-7822) IllegalArgumentException thrown instead of a CorruptIndexException

JIRA jira@apache.org

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

Robert Muir commented on LUCENE-7822:
-------------------------------------

i would be careful making assumptions that rely upon the checksum being used.

CRC32 happens to be used today because of the two choices in the JDK it is actually the fastest, but it might not always be the case in the future (I think they may have improved performance of these algorithms in jdk9/added new CRC with different polynomial, etc).

Like i said, I think the current exception is correct. I also feel the same way about LUCENE-7592: why in the world did we change a more specific exception to a generic one??? that is just not right. we should deliver the best exception possible and make the callers catch/rethrow if they want to "change" them: its an API.

> IllegalArgumentException thrown instead of a CorruptIndexException
> ------------------------------------------------------------------
>
>                 Key: LUCENE-7822
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7822
>             Project: Lucene - Core
>          Issue Type: Bug
>    Affects Versions: 6.5.1
>            Reporter: Martin Amirault
>            Priority: Minor
>         Attachments: LUCENE-7822.patch
>
>
> 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):
> {code}
> 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)
> {code}
> Simple fix would be to add IllegalArgumentException to the catch list at
> {{org/apache/lucene/index/SegmentInfos.java:289}}
> Other variations for the stacktraces:
> {code}
> 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)
> {code}
> {code}
> 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)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]