All Versions
44
Latest Version
Avg Release Cycle
51 days
Latest Release
1750 days ago

Changelog History
Page 3

  • v14.0 Changes

    December 22, 2016
    • ➕ Added programming hooks for StatementExecution and ResultSetRetrieval which allow the application to receive notifications for all executed queries, their parameters (if enabled), and the queries execution time or the retrieved ResultSet size, respectively.
    • Extended the GetConnection and CloseConnection programming hooks with information for the time taken to get a Connection from the pool or the time for which the application has held the Connection before restoring it back to the pool, i.e., before calling Connection.close();
    • 🌲 Reimplemented the existing functionality of ViburLogger for logging of long lasting getConnection() calls, slow SQL queries, and large ResultSets through the above programming hooks. Removed ViburLogger interface and the implementing it BaseViburLogger class.
    • 📇 Renamed MethodHooksHolder to InvocationHooksHolder as well as the corresponding field in ViburConfig. Example of how to add a method invocation hook: viburDataSource.getInvocationHooks().addOnMethodInvocation(invocationHook);

    • Now all timing measurement in Vibur DBCP is done via System.nanoTime() instead of System.currentTimeMillis() and all logging that contains timing is formatted in milliseconds with up to 6 digits precision.

    • 🔨 Various other refactoring and source code clean-up.

  • v13.0 Changes

    November 23, 2016
    • 🌲 Logging improvements in logTakenConnectionsOnTimeout: in case of Connections exhaustion this option will now log not only the stacktrace of the threads that have taken the Connections as at the moment of their taking, but also the current execution stacktrace of these threads, if the threads are still alive.
    • 🌲 Various other logging improvements: a) all logs created by ConnectionFactory class now contain rawConnection as part of the logged messages which allows for easy filtering/grepping of such messages. These messages are logged at debug level. b) added taking/restoring rawConnection messages to PoolOperations. These messages are logged at trace level. c) added log message at debug level in ViburDBCPDataSource when taking non-pooled rawConnection.
  • v12.0 Changes

    November 11, 2016
    • 🔨 Refactored/reimplemented the existing Connection and method invocation hooks in order to allow for multiple hook callbacks to be registered (and subsequently invoked) at a single hook invocation point. Also included the timeTaken for native JDBC Connection establishing/closing to be reported back to the hook. Example of how to add Connection and method invocation hooks: viburDataSource.getConnHooks().addOnInit(connectionInitHook); viburDataSource.getMethodHooks().addOnInvocation(invocationHook);

    • Adopted Vibur Object Pool 12.0, particularly allowed for third-party concurrent collections such as the Conversant Disruptor to be used on the place of java.util.Queue/Deque as part of the ConcurrentPool implementation. Example of how to configure Conversant Disruptor after adding the required Maven dependency: viburDataSource.setConcurrentCollection(new MultithreadConcurrentQueueCollection(poolMaxSize));

    • 🔄 Changed the Maven dependency type for ConcurrentLinkedHashMap from compile to provided, this means that applications using the Statement caching feature will now need to provide/include the Maven dependency for CLHM.

    • ✂ Removed ExceptionListener due to being underutilized.

    • 🐎 Small other performance improvements and bug fixes.

  • v11.0 Changes

    September 15, 2016
    • ➕ Added driver and driverProperties configuration options to ViburConfig. These options allow for direct configuration/injection of the used by the application JDBC Driver and subsequently allow to bypass calling the DriverManager.
    • ➕ Added allowUnwrapping configuration option - controls the behaviour of the unwrap() method on all JDBC objects.
    • ➕ Added includeQueryParameters configuration option - enables or disables the inclusion of the SQL query parameters in the generated logs.
    • ➕ Added logTakenConnectionsOnTimeout configuration option - allows in case of Connections exhaustion the application to log all currently taken Connections with optionally including the full stacktrace for each taken Connection.
    • ➕ Added invocationHook configuration option - a programming hook that allows the application to intercept all method calls on all proxied JDBC interfaces.
    • 🔧 Made the PoolService, ConnectionFactory, and PoolReducer optionally configurable/injectable in ViburConfig.
    • 🐎 Various other small fixes and performance improvements. Particularly, have refactored the invocation handlers classes hierarchy.
  • v10.0 Changes

    July 31, 2016
    • ➕ Added getNonPooledConnection() and severConnection() methods in the ViburDataSource interface. These methods are an extension to the standard DataSource interface methods and allow for creation of a non-pooled/raw JDBC Connection on demand or for severing of a pooled or non-pooled Connection.
    • ➕ Added allowConnectionAfterTermination configuration option to ViburConfig. This option allows the application to obtain a non-pooled Connection from the pool after the pool termination.
    • 🔨 Various refactoring, importantly renamed some classes in the org.vibur.dbcp package to remove the middle DBCP name part. Have also renamed DataSourceLifecycle to ViburDataSource.
    • Implemented close()/isClosed() methods in the StatementCache class.
    • 🐎 Some performance improvements and minor bug fixes.
  • v9.0 Changes

    May 02, 2016
    • This version of Vibur DBCP depends on version 9.0 of Vibur Object Pool, which contains a fix for issue #2 (close the underlying physical Connection when closing a proxy Connection after pool termination), and a new configuration option that allows to choose the underlying data structure used by the pool to be either FIFO (the old default) or LIFO (the new default).
    • 🔄 Changed the default value of the connectionIdleLimitInSeconds configuration option from 15 to 5 seconds.
    • 👌 Improved the SQLException messages and SQLState values when the accessed connection pool is terminated or not started yet.
    • Implemented unregistering of the connection pool from JMX when the pool is terminated.
    • ➕ Added useNetworkTimeout and networkTimeoutExecutor configuration options in order to provide support for setting the socket level read-timeouts via using the Connection.setNetworkTimeout() method, for the case when the JDBC Connection is validated with a custom SQL query; i.e., different than isValid.
    • Migrated the source code base to Java 1.7 and implemented AutoCloseable for ViburDBCPDataSource. Various other small fixes, refactoring and javadoc updates.
  • v8.0 Changes

    February 02, 2016
    • 🛠 Fixed issue https://github.com/vibur/vibur-dbcp/issues/7 - statement/resource leak when statement cache is disabled. This was a REGRESSION BUG introduced in version 5.0 and existing until 7.0 inclusive. This release is distributed as a new major version to better convey the importance to upgrade the Vibur DBCP version for all users of versions 5.0 till 7.0.
    • 🔨 Minor other refactoring and updates.
  • v7.0 Changes

    January 10, 2016
    • 🚀 This is a small changes only release, which is distributed as a new major version mainly due to the bug introduced in version 6.0 and subsequently fixed in 6.1.
    • 🌲 Exception logging improvements and logging level changes.
    • 🔨 Dependencies versions updates and small refactoring.
  • v6.1 Changes

    January 05, 2016
    • 🛠 Fixed a bug introduced in version 6.0 where the ExceptionCollector object was shared between all JDBC Connection objects in the pool. As a side effect of this bug, when an Exception is thrown on a particular JDBC Connection object, this will later cause the next taken from the pool JDBC Connection to be physically closed when the Connection.close() method is called - the last will cause overall performance degradation of the pool operations.
    • 👍 The ExceptionCollector interface was renamed to ExceptionListener in order to better convey the exact purpose of this facility.
  • v6.0 Changes

    December 19, 2015
    • Introduced ConnectionHooks for: a) initConnection - will be invoked only once when the raw JDBC Connection is first created. This is the place to execute an application specific one-off Connection setup logic, such as setting the default Connection network timeout or similar. b) getConnection - will be invoked on the raw JDBC Connection as part of the DataSource.getConnection() flow. This is the place to execute an application specific per taken Connection setup logic, such as setting the default database schema or role, if they vary for each getConnection() call. c) closeConnection - will be invoked on the raw JDBC Connection as part of the Connection.close() flow. This is the place to execute an application specific per taken Connection winding down logic, if needed.
    • Introduced ViburLogger - allows the application to receive notifications for all long lasting getConnection() calls, slow SQL queries, or retrieved large ResultSets. This feature can be used by the application to accumulate statistics of the count and execution time of the SQL queries, or similar.
    • Introduced ExceptionCollector - allows the application to receive notifications for all exceptions thrown by the operations invoked on a JDBC Connection object or any of its derivative objects (e.g., Statement, ResultSet, MetaData).
    • 🛠 Fixed issue #5 - configureFromProperties throws an Exception when configured as a JNDI resource.
    • 🛠 Fixed a bug where equals/hashcode cannot be called on closed JDBC objects.