From 8ca9758dc48121063418fb9cfa90d9288a543b0d Mon Sep 17 00:00:00 2001 From: Mark Robert Miller Date: Sat, 15 Sep 2012 04:51:18 +0000 Subject: [PATCH] if a task is rejected, decrement semaphore git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1385012 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/solr/update/SolrCmdDistributor.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java index 37281f069e6..726c3801879 100644 --- a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java +++ b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java @@ -29,6 +29,7 @@ import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorCompletionService; import java.util.concurrent.Future; +import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ThreadPoolExecutor; import org.apache.http.client.HttpClient; @@ -353,7 +354,12 @@ public class SolrCmdDistributor { Thread.currentThread().interrupt(); throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Update thread interrupted", e); } - pending.add(completionService.submit(task)); + try { + pending.add(completionService.submit(task)); + } catch (RejectedExecutionException e) { + semaphore.release(); + throw e; + } }