[ 
https://issues.apache.org/jira/browse/LUCENE-4083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13285538#comment-13285538
 ] 

Andrzej Bialecki  commented on LUCENE-4083:
-------------------------------------------

Hmm, right ... something interrupted here, so it shouldn't be ignored. Still, I 
think this exception should have been caught somewhere higher and dealt with 
e.g. at the level of IndexWriter or in Solr. Reporting this to user doesn't 
seem friendly or useful. Since it results in a failed commit, why not catch it 
and say so (and re-throw as a checked exception).
                
> 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to