Hello,

I'm having an issue with the IndexWriter in Lucene 2.3.1. Specifically, the 
IndexWriter.close() method is non-deterministically hanging with the following 
stack:

"""
Thread 23044: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be 
imprecise)
 - java.lang.Object.wait() @bci=2, line=485 (Interpreted frame)
 - org.apache.lucene.index.IndexWriter.finishMerges(boolean) @bci=306, 
line=2063 (Interpreted frame)
 - org.apache.lucene.index.IndexWriter.closeInternal(boolean) @bci=35, 
line=1208 (Interpreted frame)
 - org.apache.lucene.index.IndexWriter.close(boolean) @bci=41, line=1178 
(Interpreted frame)
 - org.apache.lucene.index.IndexWriter.close() @bci=2, line=1153 (Interpreted 
frame)
 - us.webmail.solr.merge.MergeTask.execute() @bci=234, line=237 (Interpreted 
frame)
 - us.webmail.solr.merge.MergeAgent.run(java.lang.String[]) @bci=455, line=521 
(Interpreted frame)
 - org.apache.hadoop.util.ToolRunner.run(org.apache.hadoop.conf.Configuration, 
org.apache.hadoop.util.Tool, java.lang.String[]) @bci=38, line=65 (Interpreted 
frame)
 - org.apache.hadoop.util.ToolBase.doMain(org.apache.hadoop.conf.Configuration, 
java.lang.String[]) @bci=3, line=54 (Interpreted frame)
 - us.webmail.solr.merge.MergeAgent.main(java.lang.String[]) @bci=17, line=572 
(Interpreted frame)
 - sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, 
java.lang.Object, java.lang.Object[]) @bci=0 (Interpreted frame)
 - sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, 
java.lang.Object[]) @bci=87, line=39 (Interpreted frame)
 - sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, 
java.lang.Object[]) @bci=6, line=25 (Interpreted frame)
 - java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) 
@bci=161, line=597 (Interpreted frame)
 - org.apache.hadoop.util.RunJar.main(java.lang.String[]) @bci=538, line=155 
(Interpreted frame)
"""


My IndexWriter opening code looks like this:
"""
// open the destination index
this.targetDirectory = null;
try{
    this.targetDirectory = FSDirectory.getDirectory(getDD(this.targetInstance),
        new NativeFSLockFactory(getDD(this.targetInstance)));
    this.targetIndex = new IndexWriter(this.targetDirectory, null, false);
    this.targetIndex.setMergeFactor(MERGE_FACTOR);
    this.targetIndex.setUseCompoundFile(false);
    // this.targetIndex.setInfoStream(System.out);
    
    this.targetIndex.setMergeScheduler(new SerialMergeScheduler());
    

} catch (Exception e){
    if(this.targetDirectory != null){
        this.targetDirectory.close();
    }
    throw new IOException("Could not open target instance: " + e.toString());
}
"""

After adding a bunch of indexes with IndexWriter.addIndexes(Directory[]), I run
"""
System.out.println("Closing the target index...");
this.targetIndex.close();
System.out.println("...done.\nClosing the target directory...");
this.targetDirectory.close();
System.out.println("...done.");
"""
... and the output clearly shows that we get stuck in close.

-------------------------------------------------------------

Is this a known bug? Does anyone know of a workaround?

Stu Hood
Architecture Software Developer
Mailtrust, a Division of Rackspace


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to