[ https://issues.apache.org/jira/browse/LUCENE-4083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13406670#comment-13406670 ]
Dawid Weiss commented on LUCENE-4083: ------------------------------------- I think I must back off the above -- I think there _is_ a possibility in which a leaked background thread would slip through. I've simulated this behavior but I'll need a refactoring to clean this up; thread leak management has become very hairy. I'm letting this issue go away for now, I'll get back to leaked threads though (soon) and I'm sure the problem will resurface then if it really is a problem. > RateLimited.pause() throws unchecked exception > ---------------------------------------------- > > Key: LUCENE-4083 > URL: https://issues.apache.org/jira/browse/LUCENE-4083 > Project: Lucene - Java > Issue Type: Bug > Components: core/store > Affects Versions: 4.0 > Reporter: Andrzej Bialecki > Fix For: 4.0 > > > The while() loop in RateLimiter.pause() invokes Thread.sleep() with > potentially large values, which occasionally results in InterruptedException > being thrown from Thread.sleep(). This is wrapped in an unchecked > ThreadInterruptedException and re-thrown, and results in high-level errors > like this: > {code} > [junit] 2012-05-29 15:50:15,464 ERROR core.SolrCore - > org.apache.lucene.util.ThreadInterruptedException: > java.lang.InterruptedException: sleep interrupted > [junit] at > org.apache.lucene.store.RateLimiter.pause(RateLimiter.java:82) > [junit] at > org.apache.lucene.store.MockIndexOutputWrapper.writeBytes(MockIndexOutputWrapper.java:82) > [junit] at > org.apache.lucene.store.MockIndexOutputWrapper.writeByte(MockIndexOutputWrapper.java:73) > [junit] at > org.apache.lucene.store.DataOutput.writeVInt(DataOutput.java:191) > [junit] at > org.apache.lucene.codecs.lucene40.Lucene40PostingsWriter.addPosition(Lucene40PostingsWriter.java:237) > [junit] at > org.apache.lucene.index.FreqProxTermsWriterPerField.flush(FreqProxTermsWriterPerField.java:519) > [junit] at > org.apache.lucene.index.FreqProxTermsWriter.flush(FreqProxTermsWriter.java:92) > [junit] at org.apache.lucene.index.TermsHash.flush(TermsHash.java:117) > [junit] at > org.apache.lucene.index.DocInverter.flush(DocInverter.java:53) > [junit] at > org.apache.lucene.index.DocFieldProcessor.flush(DocFieldProcessor.java:81) > [junit] at > org.apache.lucene.index.DocumentsWriterPerThread.flush(DocumentsWriterPerThread.java:475) > [junit] at > org.apache.lucene.index.DocumentsWriter.doFlush(DocumentsWriter.java:422) > [junit] at > org.apache.lucene.index.DocumentsWriter.flushAllThreads(DocumentsWriter.java:553) > [junit] at > org.apache.lucene.index.IndexWriter.prepareCommit(IndexWriter.java:2416) > [junit] at > org.apache.lucene.index.IndexWriter.commitInternal(IndexWriter.java:2548) > [junit] at > org.apache.lucene.index.IndexWriter.commit(IndexWriter.java:2530) > [junit] at > org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:414) > [junit] at > org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:82) > {code} > I believe this is a bug - the while() loop already ensures that the total > time spent in pause() is correct even if InterruptedException-s are thrown, > so they should not be re-thrown. > The patch is trivial - simply don't re-throw. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org