[
https://issues.apache.org/jira/browse/LUCENE-6826?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael McCandless resolved LUCENE-6826.
----------------------------------------
Resolution: Fixed
Fix Version/s: 5.4
Trunk
Thanks [~trejkaz]!
> 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
> Fix For: Trunk, 5.4
>
> Attachments: Lucene6826.java
>
>
> 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: [email protected]
For additional commands, e-mail: [email protected]