lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tim Smith (JIRA)" <j...@apache.org>
Subject [jira] [Created] (LUCENE-3373) waitForMerges deadlocks if background merge fails
Date Fri, 12 Aug 2011 15:19:27 GMT
waitForMerges deadlocks if background merge fails
-------------------------------------------------

                 Key: LUCENE-3373
                 URL: https://issues.apache.org/jira/browse/LUCENE-3373
             Project: Lucene - Java
          Issue Type: Bug
          Components: core/index
    Affects Versions: 3.0.3
            Reporter: Tim Smith


waitForMerges can deadlock if a merge fails for ConcurrentMergeScheduler

this is because the merge thread will die, but pending merges are still available

normally, the merge thread will pick up the next merge once it finishes the previous merge,
but in the event of a merge exception, the pending work is not resumed, but waitForMerges
won't complete until all pending work is complete

i worked around this by overriding doMerge() like so:
{code}
  protected final void doMerge(MergePolicy.OneMerge merge) throws IOException {
    try {
      super.doMerge(merge);
    } catch (Throwable exc) {
      // Just logging the exception and not rethrowing
      // insert logging code here
    }
  }
{code}

Here's the rough steps i used to reproduce this issue:
override doMerge like so
{code}
  protected final void doMerge(MergePolicy.OneMerge merge) throws IOException {
    try {Thread.sleep(500L);} catch (InterruptedException e) { }
    super.doMerge(merge);
    throw new IOException("fail");
  }
{code}

then, if you do the following:
loop 50 times:
  addDocument // any doc
  commit
waitForMerges // This will deadlock sometimes



SOLR-2017 may be related to this (stack trace for deadlock looked related)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


Mime
View raw message