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:11 UTC

[incubator-plc4x] branch develop updated (8d190c2 -> a67f311)

This is an automated email from the ASF dual-hosted git repository.

jfeinauer pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git.


    from 8d190c2  Adjusted the content of the failure-email
     add b054c6e  [OPM] Improved logging, better Exception handling.
     add 2cb21bc  Added some Logging for Diagnostics in PlcDriverManager.
     new a67f311  [OPM,POOL] Added better defaults for Scrapers PlcPooledDriverManager.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/plc4x/java/PlcDriverManager.java    |  7 +++++
 .../java/utils/connectionpool/PoolKeyFactory.java  |  1 +
 .../org/apache/plc4x/java/scraper/Scraper.java     | 22 ++++++++++++--
 .../org/apache/plc4x/java/scraper/ScraperTask.java |  1 +
 .../java/scraper/config/ScraperConfiguration.java  | 25 ++++++++++------
 .../config/ScraperConfigurationException.java}     | 34 +++++++++-------------
 6 files changed, 59 insertions(+), 31 deletions(-)
 copy plc4j/{protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockField.java => utils/scraper/src/main/java/org/apache/plc4x/java/scraper/config/ScraperConfigurationException.java} (53%)


[incubator-plc4x] 01/01: [OPM, POOL] Added better defaults for Scrapers PlcPooledDriverManager.

Posted by jf...@apache.org.
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);
+        });
     }
 
     /**