This is an automated email from the ASF dual-hosted git repository.
mibo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata4.git
The following commit(s) were added to refs/heads/master by this push:
new 482c99c [OLINGO-1344] Fix deadlock ThreadPool (by Aleksandr)
482c99c is described below
commit 482c99c9f0c1f8ac9cd833285ef2dc3a8c2af180
Author: mibo <[email protected]>
AuthorDate: Fri Apr 26 20:15:36 2019 +0200
[OLINGO-1344] Fix deadlock ThreadPool (by Aleksandr)
---
.../olingo/client/core/ConfigurationImpl.java | 25 ++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git
a/lib/client-core/src/main/java/org/apache/olingo/client/core/ConfigurationImpl.java
b/lib/client-core/src/main/java/org/apache/olingo/client/core/ConfigurationImpl.java
index 14c59d6..9f88bdb 100644
---
a/lib/client-core/src/main/java/org/apache/olingo/client/core/ConfigurationImpl.java
+++
b/lib/client-core/src/main/java/org/apache/olingo/client/core/ConfigurationImpl.java
@@ -18,11 +18,6 @@
*/
package org.apache.olingo.client.core;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
import org.apache.olingo.client.api.Configuration;
import org.apache.olingo.client.api.http.HttpClientFactory;
import org.apache.olingo.client.api.http.HttpUriRequestFactory;
@@ -30,6 +25,13 @@ import
org.apache.olingo.client.core.http.DefaultHttpClientFactory;
import org.apache.olingo.client.core.http.DefaultHttpUriRequestFactory;
import org.apache.olingo.commons.api.format.ContentType;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
public class ConfigurationImpl implements Configuration {
private static final String DEFAULT_PUB_FORMAT = "pubFormat";
@@ -60,7 +62,18 @@ public class ConfigurationImpl implements Configuration {
private final Map<String, Object> CONF = new HashMap<String, Object>();
- private transient ExecutorService executor =
Executors.newFixedThreadPool(10);
+ private transient ExecutorService executor = createExecutor(10);
+
+ private ExecutorService createExecutor(final int threads) {
+ final ThreadPoolExecutor tp = new ThreadPoolExecutor(
+ threads,
+ threads,
+ 5L,
+ TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue<Runnable>());
+ tp.allowCoreThreadTimeOut(true);
+ return tp;
+ }
/**
* Gets given configuration property.