You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by jf...@apache.org on 2018/12/11 08:37:12 UTC
[incubator-plc4x] 01/01: [OPM,
POOL] Added better defaults for Scrapers PlcPooledDriverManager.
This is an automated email from the ASF dual-hosted git repository.
jfeinauer pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
commit a67f31160276782f8081563287948cfbf2ae2d6e
Author: Julian Feinauer <j....@pragmaticminds.de>
AuthorDate: Tue Dec 11 09:36:15 2018 +0100
[OPM,POOL] Added better defaults for Scrapers PlcPooledDriverManager.
---
.../java/utils/connectionpool/PoolKeyFactory.java | 1 +
.../java/org/apache/plc4x/java/scraper/Scraper.java | 20 +++++++++++++++++++-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/plc4j/utils/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PoolKeyFactory.java b/plc4j/utils/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PoolKeyFactory.java
index e5d73c1..f72bdce 100644
--- a/plc4j/utils/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PoolKeyFactory.java
+++ b/plc4j/utils/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PoolKeyFactory.java
@@ -30,6 +30,7 @@ import java.util.regex.Pattern;
public class PoolKeyFactory {
+ // TODO 11.12.18 jf: add a property to the drivers to keep this generic
public PoolKey getPoolKey(String url, PlcAuthentication plcAuthentication) throws PlcConnectionException {
Objects.requireNonNull(url);
URI connectionUri;
diff --git a/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java
index a478272..725e58e 100644
--- a/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java
+++ b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java
@@ -25,7 +25,10 @@ import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import org.apache.commons.lang3.tuple.Triple;
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
+import org.apache.commons.pool2.impl.GenericKeyedObjectPool;
+import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
import org.apache.plc4x.java.PlcDriverManager;
+import org.apache.plc4x.java.api.PlcConnection;
import org.apache.plc4x.java.scraper.config.ScraperConfiguration;
import org.apache.plc4x.java.scraper.util.PercentageAboveThreshold;
import org.apache.plc4x.java.utils.connectionpool.PooledPlcDriverManager;
@@ -71,7 +74,22 @@ public class Scraper {
* @param resultHandler
*/
public Scraper(ScraperConfiguration config, ResultHandler resultHandler) {
- this(resultHandler, new PooledPlcDriverManager(), config.getJobs());
+ this(resultHandler, createPooledDriverManager(), config.getJobs());
+ }
+
+ /**
+ * Min Idle per Key is set to 1 for situations where the network is broken.
+ * Then, on reconnect we can fail all getConnection calls (in the ScraperTask) fast until
+ * (in the background) the idle connection is created and the getConnection call returns fast.
+ */
+ private static PooledPlcDriverManager createPooledDriverManager() {
+ return new PooledPlcDriverManager(pooledPlcConnectionFactory -> {
+ GenericKeyedObjectPoolConfig<PlcConnection> poolConfig = new GenericKeyedObjectPoolConfig<>();
+ poolConfig.setMinIdlePerKey(1); // This should avoid problems with long running connect attempts??
+ poolConfig.setTestOnBorrow(true);
+ poolConfig.setTestOnReturn(true);
+ return new GenericKeyedObjectPool<>(pooledPlcConnectionFactory, poolConfig);
+ });
}
/**