lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael McCandless <luc...@mikemccandless.com>
Subject Re: ClassCastException when writing to index writer
Date Fri, 03 Oct 2008 21:35:36 GMT

Which Java environment are you running?

super.clone() from SegmentInfos should produce a new SegmentInfos  
object.

It seems like in your case it's somehow producing a Vector instead?

Mike

Paul Chan wrote:

> Hi Mike,
>
> I am actually using the Compass Search Engine which in turn makes  
> use of
> Lucene.  They are doing the following in their code:
>
>        IndexWriter indexWriter = new IndexWriter(dir, autoCommit,  
> analyzer,
> create, deletionPolicy);
>
> where autoCommit = false.
>
> In turn, Lucene will do the following:
>
> public class IndexWriter {
>
>      public IndexWriter(Directory d, boolean autoCommit, Analyzer a,
> boolean create, IndexDeletionPolicy deletionPolicy)
>       throws CorruptIndexException, LockObtainFailedException,  
> IOException
> {
>          init(d, a, create, false, deletionPolicy, autoCommit);
>      }
>
>      private void init(Directory d, Analyzer a, final boolean create,
> boolean closeDir,                   IndexDeletionPolicy  
> deletionPolicy,
> boolean autoCommit)
>      {
>         ...
>         ..
>         if (!autoCommit) {
>           rollbackSegmentInfos = (SegmentInfos) segmentInfos.clone();
>         }
>      }
> }
>
> which calls the clone() method that causes the exception because  
> autoCommit
> = false.
>
> On Fri, Oct 3, 2008 at 4:54 PM, Michael McCandless <
> lucene@mikemccandless.com> wrote:
>
>>
>> Can you describe what led up to this exception?  Ie, what calls you  
>> made to
>> Lucene before this.
>>
>> Mike
>>
>>
>> Paul Chan wrote:
>>
>> I think I know what the problem is looking at the code:
>>>
>>> In SegmentInfos.java (line 321):
>>>
>>> class SegmentInfos extends Vector
>>> {
>>>  public Object clone() {
>>>     SegmentInfos sis = (SegmentInfos) super.clone();
>>>     for(int i=0;i<sis.size();i++) {
>>>       sis.setElementAt(((SegmentInfo) sis.elementAt(i)).clone(), i);
>>>     }
>>>     return sis;
>>>  }
>>> }
>>>
>>> We see that it is trying to cast a Vector into SegmentInfos which  
>>> explains
>>> the ClassCastException.  This is definitely a bug.
>>>
>>>
>>> On Fri, Oct 3, 2008 at 3:40 PM, Paul Chan <wayofdragon@gmail.com>  
>>> wrote:
>>>
>>> Hi,
>>>>
>>>> I am using lucene 2.3.2 and I encounter the following exception  
>>>> when I
>>>> try
>>>> to insert a object into the index.
>>>>
>>>> Caused by: java.lang.ClassCastException: java.util.Vector cannot  
>>>> be cast
>>>> to
>>>> org.apache.lucene.index.SegmentInfos
>>>> at org.apache.lucene.index.SegmentInfos.clone(SegmentInfos.java: 
>>>> 321)
>>>> at org.apache.lucene.index.IndexWriter.init(IndexWriter.java:715)
>>>> at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:666)
>>>>
>>>> Has Anyone seen this problem before?  What seems to be the problem?
>>>>
>>>> Thanks!
>>>>
>>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message