changeset 8485:026f4c684ee5

Make maxWait configurable and wait for 30 seconds
author "Tom Gottfried <tom@intevation.de>"
date Fri, 28 Nov 2014 16:34:40 +0100 (2014-11-28)
parents 8c615d738e84
children d0719e98a9da
files artifacts/doc/conf/backend-db.xml artifacts/doc/conf/seddb-db.xml backend/src/main/java/org/dive4elements/river/backend/Credentials.java backend/src/main/java/org/dive4elements/river/backend/FLYSCredentials.java backend/src/main/java/org/dive4elements/river/backend/SedDBCredentials.java backend/src/main/java/org/dive4elements/river/backend/SessionFactoryProvider.java backend/src/main/java/org/dive4elements/river/backend/utils/DBCPConnectionProvider.java contrib/make_flys_release/make_release.sh
diffstat 8 files changed, 61 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/doc/conf/backend-db.xml	Fri Nov 28 10:21:40 2014 +0100
+++ b/artifacts/doc/conf/backend-db.xml	Fri Nov 28 16:34:40 2014 +0100
@@ -7,4 +7,5 @@
     <driver>org.postgresql.Driver</driver>
     <url>jdbc:postgresql://localhost:5432/d4e</url>
     <validation-query>select 1 from rivers</validation-query>
+    <max-wait>30000</max-wait>
 </backend-database>
--- a/artifacts/doc/conf/seddb-db.xml	Fri Nov 28 10:21:40 2014 +0100
+++ b/artifacts/doc/conf/seddb-db.xml	Fri Nov 28 16:34:40 2014 +0100
@@ -7,6 +7,7 @@
     <driver>org.postgresql.Driver</driver>
     <url>jdbc:postgresql://localhost:5432/seddb</url>
     <validation-query>select 1 from gewaesser</validation-query>
+    <max-wait>30000</max-wait>
     <!--
     <connection-init-sqls>ALTER SESSION SET CURRENT_SCHEMA=SEDDB</connection-init-sqls>
     -->
--- a/backend/src/main/java/org/dive4elements/river/backend/Credentials.java	Fri Nov 28 10:21:40 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/backend/Credentials.java	Fri Nov 28 16:34:40 2014 +0100
@@ -17,6 +17,7 @@
     protected String   url;
     protected String   connectionInitSqls;
     protected String   validationQuery;
+    protected String   maxWait;
     protected Class [] classes;
 
     public Credentials() {
@@ -30,6 +31,7 @@
         String   url,
         String   connectionInitSqls,
         String   validationQuery,
+        String    maxWait,
         Class [] classes
     ) {
         this.user               = user;
@@ -39,6 +41,7 @@
         this.url                = url;
         this.connectionInitSqls = connectionInitSqls;
         this.validationQuery    = validationQuery;
+        this.maxWait            = maxWait;
         this.classes            = classes;
     }
 
@@ -90,6 +93,14 @@
         this.validationQuery = validationQuery;
     }
 
+    public String getMaxWait() {
+        return maxWait;
+    }
+
+    public void setMaxWait(String maxWait) {
+        this.maxWait = maxWait;
+    }
+
     public String getConnectionInitSqls() {
         return connectionInitSqls;
     }
--- a/backend/src/main/java/org/dive4elements/river/backend/FLYSCredentials.java	Fri Nov 28 10:21:40 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/backend/FLYSCredentials.java	Fri Nov 28 16:34:40 2014 +0100
@@ -111,6 +111,9 @@
     public static final String XPATH_VALIDATION_QUERY =
         "/artifact-database/backend-database/validation-query/text()";
 
+    public static final String XPATH_MAX_WAIT =
+        "/artifact-database/backend-database/max-wait/text()";
+
     public static final String DEFAULT_USER =
         System.getProperty("flys.backend.user", "flys");
 
@@ -140,6 +143,9 @@
         System.getProperty(
             "flys.backend.connection.validation.query");
 
+    public static final String DEFAULT_MAX_WAIT =
+        System.getProperty("flys.backend.connection.max.wait");
+
     public static final Class [] CLASSES = {
         Annotation.class,
         AnnotationType.class,
@@ -229,11 +235,12 @@
         String driver,
         String url,
         String connectionInitSqls,
-        String validationQuery
+        String validationQuery,
+        String maxWait
     ) {
         super(
             user, password, dialect, driver, url,
-            connectionInitSqls, validationQuery, CLASSES);
+            connectionInitSqls, validationQuery, maxWait, CLASSES);
     }
 
     private static Credentials instance;
@@ -258,9 +265,12 @@
                 Config.getStringXPath(
                     XPATH_VALIDATION_QUERY,
                     DEFAULT_VALIDATION_QUERY);
+            String maxWait =
+                Config.getStringXPath(XPATH_MAX_WAIT, DEFAULT_MAX_WAIT);
 
             instance = new FLYSCredentials(
-                user, password, dialect, driver, url, connectionInitSqls, validationQuery);
+                user, password, dialect, driver, url, connectionInitSqls,
+                validationQuery, maxWait);
         }
         return instance;
     }
@@ -273,7 +283,9 @@
             DEFAULT_DRIVER,
             DEFAULT_URL,
             DEFAULT_CONNECTION_INIT_SQLS,
-            DEFAULT_VALIDATION_QUERY);
+            DEFAULT_VALIDATION_QUERY,
+            DEFAULT_MAX_WAIT
+        );
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/backend/src/main/java/org/dive4elements/river/backend/SedDBCredentials.java	Fri Nov 28 10:21:40 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/backend/SedDBCredentials.java	Fri Nov 28 16:34:40 2014 +0100
@@ -87,6 +87,9 @@
     public static final String XPATH_VALIDATION_QUERY =
         "/artifact-database/seddb-database/validation-query/text()";
 
+    public static final String XPATH_MAX_WAIT =
+        "/artifact-database/seddb-database/max-wait/text()";
+
     public static final String DEFAULT_USER =
         System.getProperty("flys.seddb.user", "seddb");
 
@@ -116,6 +119,9 @@
         System.getProperty(
             "flys.seddb.connection.validation.query");
 
+    public static final String DEFAULT_MAX_WAIT =
+        System.getProperty("flys.seddb.connection.max.wait");
+
     public static final Class [] CLASSES = {
         BezugspegelgewId.class,
         Bezugspegelgew.class,
@@ -183,11 +189,12 @@
         String driver,
         String url,
         String connectionInitSqls,
-        String validationQuery
+        String validationQuery,
+        String maxWait
     ) {
         super(
             user, password, dialect, driver, url,
-            connectionInitSqls, validationQuery, CLASSES);
+            connectionInitSqls, validationQuery, maxWait, CLASSES);
     }
 
     public static synchronized Credentials getInstance() {
@@ -210,10 +217,12 @@
                 Config.getStringXPath(
                     XPATH_VALIDATION_QUERY,
                     DEFAULT_VALIDATION_QUERY);
+            String maxWait =
+                Config.getStringXPath(XPATH_MAX_WAIT, DEFAULT_MAX_WAIT);
 
             instance = new SedDBCredentials(
                 user, password, dialect, driver, url,
-                connectionInitSqls, validationQuery);
+                connectionInitSqls, validationQuery, maxWait);
         }
         return instance;
     }
@@ -226,7 +235,9 @@
             DEFAULT_DRIVER,
             DEFAULT_URL,
             DEFAULT_CONNECTION_INIT_SQLS,
-            DEFAULT_VALIDATION_QUERY);
+            DEFAULT_VALIDATION_QUERY,
+            DEFAULT_MAX_WAIT
+        );
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/backend/src/main/java/org/dive4elements/river/backend/SessionFactoryProvider.java	Fri Nov 28 10:21:40 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/backend/SessionFactoryProvider.java	Fri Nov 28 16:34:40 2014 +0100
@@ -148,6 +148,10 @@
         if (validationQuery != null) {
             props.setProperty("validationQuery", validationQuery);
         }
+        String maxWait = credentials.getMaxWait();
+        if (maxWait != null) {
+            props.setProperty("maxWait", maxWait);
+        }
 
         cfg.mergeProperties(props);
 
--- a/backend/src/main/java/org/dive4elements/river/backend/utils/DBCPConnectionProvider.java	Fri Nov 28 10:21:40 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/backend/utils/DBCPConnectionProvider.java	Fri Nov 28 16:34:40 2014 +0100
@@ -217,7 +217,17 @@
                 ds.setValidationQuery(validationQuery);
             }
 
-            ds.setMaxWait(1000); //TODO: make it configurable
+            String maxWait = props.getProperty("maxWait");
+            if (maxWait != null) {
+                try {
+                    ds.setMaxWait(Integer.parseInt(maxWait));
+                }
+                catch (NumberFormatException nfe) {
+                    log.error(
+                        "Property maxWait could not be parsed as integer."
+                    );
+                }
+            }
 
             // The BasicDataSource has lazy initialization
             // borrowing a connection will start the DataSource
--- a/contrib/make_flys_release/make_release.sh	Fri Nov 28 10:21:40 2014 +0100
+++ b/contrib/make_flys_release/make_release.sh	Fri Nov 28 16:34:40 2014 +0100
@@ -383,6 +383,7 @@
     <driver>oracle.jdbc.driver.OracleDriver</driver>
     <url>jdbc:oracle:thin:@//$BACKENDURL:$BACKENDPORT/$BACKENDBACK</url>
     <validation-query>select 1 from rivers</validation-query>
+    <max-wait>30000</max-wait>
     <connection-init-sqls>$INITSQLS</connection-init-sqls>
 </backend-database>
 EOF
@@ -396,6 +397,7 @@
     <driver>oracle.jdbc.driver.OracleDriver</driver>
     <url>jdbc:oracle:thin:@//$SEDDBURL:$SEDDBPORT/$SEDDBBACK</url>
     <validation-query>select 1 from gewaesser</validation-query>
+    <max-wait>30000</max-wait>
     <connection-init-sqls>$SEDINITSQLS</connection-init-sqls>
 </seddb-database>
 EOF

http://dive4elements.wald.intevation.org