[ 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to