Version 1.4.0.9

  • Fixed some SecurityExceptions caused by worker threads being created without the right AccessControlContext. (DBQ-172)

Version 1.4.0.8

  • Fixed a race condition where, if multiple threads found the connection pool empty and the size limit (ConnPoolMaxConns) was not yet reached, all the threads would create a new connection. (DBQ-173)

Version 1.4.0.7

  • Fixed an issue where trying to log a timeout exception could result in a NullPointerException if Finer tracing was disabled. (DBQ-169)

Version 1.4.0.6

  • Fixed a NullPointerException thrown when using cached row sets (configuration property CacheNonTransactionQueryResultSets=true), on Rhino 2.4.0.11 and later. (DBQ-153)

Version 1.4.0.5

  • Added validations to DataSource configuration profile. WorkQueueMaxSize, WorkerThreads, AvailabilityPollInterval, and ConnPoolIdleInterval will now not allow illegal values. Several other attributes are now checked for values that may adversely affect performance and warnings printed if so. (DBQ-98)

  • Added a new counter to the DataSourceStats parameter set, "poolWaitTimeout", to record timeouts that occur when waiting on a connection from the pool (because the pool has no free connections or because a new connection is taking a long time to establish). Previously these were included in the "queueTimeout" counter. (DBQ-33)

  • Documentation improvements to better describe the interaction between the timeouts for executing queries and for waiting on results. (DBQ-38)

  • Added documentation for using MySQL. (DBQ-139)

  • Extended example service to show how to call a stored procedure. (DBQ-53)

  • Improved Ant script provided with the example services. (DBQ-129)

Version 1.4.0.3

  • Connections no longer get stuck in the IN_USE state when a RuntimeException occurs during task execution. For asynchronous tasks, the occurrence of a RuntimeException will be indicated by the new QueryFailureReason enum type constant RUNTIME_EXCEPTION. For synchronous API methods, the exception will be wrapped in a DatabaseQueryException thrown by the method. (DBQ-130)

Version 1.4.0.0

API and deployment changes

  • From release 1.4.0, the Database Query resource adaptor requires Java 7.

  • All SLEE component versions have been updated to 1.4.

  • Added a new SLEE library named 'Database Query Types', containing the Java types for the Database Query API. The library JAR is bundled within the resource adaptor type DU, and is deployed as part of the RA. This allows service developers to deploy implementations of QueryInfo in libraries. (DBQ-62)

  • All alarms related to DataSource problems now use "dataSourceProfileTableName/dataSourceProfileName" as alarmInstanceId (previously some alarms used DataSource description as alarmInstanceId). (DBQ-72)

New features

  • Introduced a guard activity to prevent the RA from becoming inactive if synchronous operations are in progress. The activity will end after all synchronous queries and transactions have ended. It will also prevent the RA from becoming inactive while there are 'lost' transactions (resulting from either synchronous or asynchronous operations). Methods on DatabaseFutureResult and DatabaseQueryProvider.createTransaction() may now throw an IllegalStateException when the resource adaptor is stopping. (DBQ-69)

Bug fixes

  • Fixed leak of timer tasks when resource adaptor fails to activate. (DBQ-73)

  • Increasing ConnPoolMinSize abruptly no longer leads to exceptions being logged. (DBQ-49)

  • Problems that occur while ending transactions will now be reported correctly. (DBQ-103)

Improvements

  • The resource adaptor implementation now uses classes in the javax.sql.rowset package, available in Java 7. Classes from the internal com.sun.rowset package were used in previous versions. (DBQ-50)

  • Query timeouts are now set on every statement, and the example deploy scripts have been updated to set the connection timeout. These two timeouts are necessary to prevent event router threads from blocking indefinitely in some network or database failure cases. (DBQ-64)

  • A description must now be provided when creating a DataSource profile. The profile will fail validation if it is missing. This fixes a null pointer exception when raising an alarm for the datasource. (DBQ-52)

  • Additional permissions have been added to the resource adaptor and Oracle driver library to allow the latest Oracle JDBC driver (12.1.0.1 at time of release) to be used. (DBQ-71)

  • Added templates and scripts for packaging MySQL and PostgreSQL JDBC drivers into library JARs. (DBQ-60)

  • Added scripts for using the example service with MySQL and PostgreSQL databases. (DBQ-67)

  • Fail the datasource if the idle check query times out. This is so we can detect failures when a network error makes the server unreachable. The timeout used is the datasource’s configured QueryTimeout.

Version 1.3.0

  • Added support for stored procedures by allowing Callable Statements (DBQ-45)

  • Added new abstract classes for common default implementations of QueryInfo (DBQ-31)

  • DB Query now allows a pool to be configured with a minimum number of connections. The pool will be populated when a data source is marked as available. (DBQ-39)

  • If the closure of an idle or old connection would reduce the number of pooled connections to below the configured minimum pool size, a new connection will be created to replace it before it is closed. (DBQ-40)

  • The following data source configuration profile values can now be changed without disabling and re-enabling the data source: ConnPoolMaxConnectionAge, ConnPoolMaxConns, ConnPoolMaxIdle, ConnPoolMinSize, ConnPoolSize, WorkerThreads.) (DBQ-41)

Version 1.2.1

  • Allow a pool to be configured with a minimum number of connections. The pool will be populated when a data source is marked as available. (DBQ-39)

  • If the closure of an idle or old connection would reduce the number of pooled connections to below the configured minimum pool size, a new connection will be created to replace it before it is closed. (DBQ-40)

  • The following data source configuration profile values can now be changed without disabling and re-enabling the data source: ConnPoolMaxConnectionAge, ConnPoolMaxConns, ConnPoolMaxIdle, ConnPoolMinSize, ConnPoolSize, WorkerThreads. (DBQ-41)

  • Fix a bug that prevented multiple resource adaptor entities being used. (DBQ-44)

  • Stopped memory leak caused by MySQL not firing a ConnectionEvent when the physical connection is closed. (DBQ-46)

  • Reduce the number of spurious "work is being queued" alarms that were being raised during harmless short-lived load spikes. (DBQ-37)

  • Improved DB Query behaviour under overload conditions by adding an option to cache results and close all resources immediately. This can be enabled by setting the CacheNonTransactionQueryResultSets config property to true. (Default is false.) (DBQ-34)

Version 1.2.0

  • Add support for explicit transaction demarcation (start transaction, commit, rollback). (DBQ-16)

  • The fail-over behaviour can be specified for each query. (DBQ-17)

  • Added an MBean for an administrator to monitor internal counters, forcibly end transactions and close transactions. (DBQ-23)

  • The name calculated for statistics parameter sets now uses the profile name rather than the data source description. (DBQ-12)

  • Support configuration setter methods that take java.util.Properties arguments. (DBQ-24)

  • Close physical connections if they are older than a (configurable) age. (DBQ-26)

  • The RA requires a license to activate in production Rhino instances. (DBQ-14)

Version 1.1.0

  • Add support for database write operations, i.e INSERT and UPDATE.

  • Add an isDataSourceAvailable() method to the provider.

  • Fix a NullPointerException sometimes thrown by the connection expiry task.

Version 1.0

  • First release.