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

Trejkaz commented on LUCENE-6826:
---------------------------------

One of the fields, our test indexes all have the same value, which happens to 
be the value we filter out, and then the contents of that filtered stream get 
merged with another field. It might not be too hard to mock up a test case with 
similar behaviour, will see what I can do tomorrow.


> java.lang.ClassCastException: org.apache.lucene.index.TermsEnum$2 cannot be 
> cast to org.apache.lucene.index.MultiTermsEnum when adding indexes
> ----------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-6826
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6826
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/index
>    Affects Versions: 5.2.1
>            Reporter: Trejkaz
>
> We are using addIndexes and FilterCodecReader tricks as part of index 
> migration.
> Whether FilterCodecReader tricks are required to reproduce this is uncertain, 
> but in any case, when migrating a particular index, I saw this exception:
> {noformat}
> java.lang.ClassCastException: org.apache.lucene.index.TermsEnum$2 cannot be 
> cast to org.apache.lucene.index.MultiTermsEnum
>       at 
> org.apache.lucene.index.MappedMultiFields$MappedMultiTerms.iterator(MappedMultiFields.java:65)
>       at 
> org.apache.lucene.codecs.blocktree.BlockTreeTermsWriter.write(BlockTreeTermsWriter.java:426)
>       at 
> org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write(PerFieldPostingsFormat.java:198)
>       at 
> org.apache.lucene.codecs.FieldsConsumer.merge(FieldsConsumer.java:105)
>       at 
> org.apache.lucene.index.SegmentMerger.mergeTerms(SegmentMerger.java:193)
>       at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:95)
>       at org.apache.lucene.index.IndexWriter.addIndexes(IndexWriter.java:2519)
> {noformat}
> TermsEnum$2 appears to be TermsEnum.EMPTY. The place where it creates it is 
> here:
> MultiTermsEnum#reset:
> {code}
>     if (queue.size() == 0) {
>       return TermsEnum.EMPTY;   // <- this is not a MultiTermsEnum
>     } else {
>       return this;
>     }
> {code}
> A quick hack would be for MappedMultiFields to check for TermsEnum.EMPTY 
> specifically before casting, but there might be some way to avoid the cast 
> entirely and that would obviously be a better idea.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to