Am 05.07.2016 um 22:00 schrieb sebb:
If the user changes the validation query from non-empty to empty, I
think the code could leave the original query untouched.

I think it would be safer to do the following:

String validationQuery = getCheckQuery();
if (!StringUtils.isBlank(validationQuery)) {
     dataSource.setValidationQuery(validationQuery);
} else {
     dataSource.setValidationQuery(null);
}
Probably a good idea. Thanks for the hint.

I have reversed the logic, to get rid of the negation in the if clause, but the
result should be the same.

Regards,
 Felix



On 5 July 2016 at 20:45,  <[email protected]> wrote:
Author: fschumacher
Date: Tue Jul  5 19:45:30 2016
New Revision: 1751545

URL: http://svn.apache.org/viewvc?rev=1751545&view=rev
Log:
Use isValid() method from jdbc driver, if no validationQuery
is given in JDBC Connection Configuration.

Bugzilla Id: 59803

Modified:
     
jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
     jmeter/trunk/xdocs/changes.xml
     jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: 
jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java?rev=1751545&r1=1751544&r2=1751545&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
 (original)
+++ 
jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
 Tue Jul  5 19:45:30 2016
@@ -25,6 +25,7 @@ import java.util.Map;
  import java.util.Set;

  import org.apache.commons.dbcp2.BasicDataSource;
+import org.apache.commons.lang3.StringUtils;
  import org.apache.jmeter.config.ConfigElement;
  import org.apache.jmeter.testbeans.TestBean;
  import org.apache.jmeter.testbeans.TestBeanHelper;
@@ -209,7 +210,10 @@ public class DataSourceElement extends A

          if(isKeepAlive()) {
              dataSource.setTestWhileIdle(true);
-            dataSource.setValidationQuery(getCheckQuery());
+            String validationQuery = getCheckQuery();
+            if (!StringUtils.isBlank(validationQuery)) {
+                dataSource.setValidationQuery(validationQuery);
+            }
              
dataSource.setSoftMinEvictableIdleTimeMillis(Long.parseLong(getConnectionAge()));
              
dataSource.setTimeBetweenEvictionRunsMillis(Integer.parseInt(getTrimInterval()));
          }

Modified: jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1751545&r1=1751544&r2=1751545&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Tue Jul  5 19:45:30 2016
@@ -110,6 +110,8 @@ Summary

  <h3>General</h3>
  <ul>
+    <li><bug>59803</bug>Use <code>isValid()</code> method from jdbc driver, if 
no validationQuery
+    is given in JDBC Connection Configuration.</li>
  </ul>

  <ch_section>Non-functional changes</ch_section>

Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1751545&r1=1751544&r2=1751545&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jmeter/trunk/xdocs/usermanual/component_reference.xml Tue Jul  5 19:45:30 
2016
@@ -4061,10 +4061,10 @@ instead. (see figures 12 and 13).</p>
          See <a 
href="https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getSoftMinEvictableIdleTimeMillis--";>BasicDataSource.html#getSoftMinEvictableIdleTimeMillis</a>.
          Defaults to 5000 (5 seconds)
          </property>
-        <property name="Validation Query" required="Yes">A simple query used 
to determine if the database is still responding.
-        This defaults to 'SELECT 1' which is suitable for many databases.
-        However some may require a different query; for example Oracle 
requires something like 'SELECT 1 FROM DUAL'.
-        Note this validation query is used on pool creation to validate it even if 
"Test While Idle" suggests query would only be used on idle connections.
+        <property name="Validation Query" required="No">A simple query used to 
determine if the database is still responding.
+        This defaults to the '<code>isValid()</code>' method of the jdbc 
driver, which is suitable for many databases.
+        However some may require a different query; for example Oracle something like 
'<code>SELECT 1 FROM DUAL</code>' could be used.
+        Note this validation query is used on pool creation to validate it even if 
"<code>Test While Idle</code>" suggests query would only be used on idle 
connections.
          This is DBCP behaviour.
          </property>
          <property name="Database URL" required="Yes">JDBC Connection string for the 
database.</property>



Reply via email to