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]