You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/08/14 16:49:30 UTC
[lucene-solr] branch reference_impl_dev updated: @538
ParExecutorService polish.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl_dev by this push:
new 67ae8d7 @538 ParExecutorService polish.
67ae8d7 is described below
commit 67ae8d7a672ce18746d85e9011a927f12101979c
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Fri Aug 14 11:49:05 2020 -0500
@538 ParExecutorService polish.
---
.../org/apache/solr/common/ParWorkExecService.java | 108 ++++++---------------
1 file changed, 31 insertions(+), 77 deletions(-)
diff --git a/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java b/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java
index bd33ac2..fb84d6d 100644
--- a/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java
+++ b/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java
@@ -1,6 +1,5 @@
package org.apache.solr.common;
-import org.apache.solr.common.util.CloseTracker;
import org.apache.solr.common.util.ObjectReleaseTracker;
import org.apache.solr.common.util.SysStats;
import org.apache.solr.common.util.TimeOut;
@@ -10,26 +9,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.invoke.MethodHandles;
-import java.lang.management.ManagementFactory;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.AbstractExecutorService;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
-import java.util.concurrent.Phaser;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.RunnableFuture;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;
public class ParWorkExecService extends AbstractExecutorService {
@@ -99,23 +89,7 @@ public class ParWorkExecService extends AbstractExecutorService {
service.execute(new Runnable() {
@Override
public void run() {
- try {
- finalRunnable.run();
- } finally {
- try {
- if (finalRunnable instanceof ParWork.SolrFutureTask) {
-
- } else {
- available.release();
- }
- } finally {
- ParWork.closeExecutor();
- running.decrementAndGet();
- synchronized (awaitTerminate) {
- awaitTerminate.notifyAll();
- }
- }
- }
+ runIt(finalRunnable, false);
}
});
}
@@ -236,14 +210,7 @@ public class ParWorkExecService extends AbstractExecutorService {
service.execute(new Runnable() {
@Override
public void run() {
- try {
- runnable.run();
- } finally {
- running.decrementAndGet();
- synchronized (awaitTerminate) {
- awaitTerminate.notifyAll();
- }
- }
+ runIt(runnable, false);
}
});
return;
@@ -253,34 +220,15 @@ public class ParWorkExecService extends AbstractExecutorService {
} else {
- try {
- available.acquire();
- } catch (InterruptedException e) {
- ParWork.propegateInterrupt(e);
- running.decrementAndGet();
- synchronized (awaitTerminate) {
- awaitTerminate.notifyAll();
- }
+
+ if (!available.tryAcquire()) {
+ runIt(runnable, true);
return;
}
- if (!checkLoad()) {
- try {
- runnable.run();
- } finally {
- try {
- if (runnable instanceof ParWork.SolrFutureTask) {
- } else {
- available.release();
- }
- } finally {
- ParWork.closeExecutor();
- running.decrementAndGet();
- synchronized (awaitTerminate) {
- awaitTerminate.notifyAll();
- }
- }
- }
+ if (!checkLoad()) {
+ runIt(runnable, true);
+ return;
}
}
@@ -288,23 +236,7 @@ public class ParWorkExecService extends AbstractExecutorService {
service.execute(new Runnable() {
@Override
public void run() {
- try {
- finalRunnable.run();
- } finally {
- try {
- if (finalRunnable instanceof ParWork.SolrFutureTask) {
-
- } else {
- available.release();
- }
- } finally {
- ParWork.closeExecutor();
- running.decrementAndGet();
- synchronized (awaitTerminate) {
- awaitTerminate.notifyAll();
- }
- }
- }
+ runIt(finalRunnable, false);
}
});
@@ -333,6 +265,28 @@ public class ParWorkExecService extends AbstractExecutorService {
// }
}
+ private void runIt(Runnable runnable, boolean callThreadRuns) {
+ try {
+ runnable.run();
+ } finally {
+ try {
+ if (runnable instanceof ParWork.SolrFutureTask) {
+
+ } else {
+ available.release();
+ }
+ } finally {
+ try {
+ running.decrementAndGet();
+ synchronized (awaitTerminate) {
+ awaitTerminate.notifyAll();
+ }
+ } finally {
+ if (!callThreadRuns) ParWork.closeExecutor();
+ }
+ }
+ }
+ }
public Integer getMaximumPoolSize() {
return maxSize;