Commons Dbcp
  1. Commons Dbcp
  2. DBCP-207

DBCP 1.2.1 incompatible with Informix (driver doesn't support setReadOnly(...))

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.2.1
    • Fix Version/s: 1.3
    • Labels:
      None
    • Environment:

      using the pooling driver component with an informix driver

      Description

      I recieved an error using commons-dbcp-1.2.1.jar and ifxjdbc.jar for my informix driver:

      org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted
      at org.apache.commons.dbcp.PoolingDriver.connect(PoolingDriver.java:183)
      at java.sql.DriverManager.getConnection(DriverManager.java:539)
      at java.sql.DriverManager.getConnection(DriverManager.java:211)
      at ConnectionPoolingTest.main(ConnectionPoolingTest.java:105)
      Caused by: java.util.NoSuchElementException: Could not create a validated object, cause: Read only mode not supported
      at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:806)
      at org.apache.commons.dbcp.PoolingDriver.connect(PoolingDriver.java:175)

      I will look into the comment provided by Dirk in bug ID DBCP-127 (version 1.1), but it appears this bug still has an impact in the 1.2.1 version. If anyone has any other suggestions, they would be greatly appreciated.

      1. DBCP-207.patch
        1 kB
        Dain Sundstrom

        Activity

        Hide
        Dain Sundstrom added a comment -

        Already fixed for PoolingDataSource, but PerUserDataSource and SharedPoolDataSource still always set this value. These data sources use a primitives for the read only, transaction isolation and auto commit default values so there is not way to see if the value was not set. This patch checks if the read-only and auto-commit values are already set before changing them which should setReadOnly from being called.

        Show
        Dain Sundstrom added a comment - Already fixed for PoolingDataSource, but PerUserDataSource and SharedPoolDataSource still always set this value. These data sources use a primitives for the read only, transaction isolation and auto commit default values so there is not way to see if the value was not set. This patch checks if the read-only and auto-commit values are already set before changing them which should setReadOnly from being called.
        Hide
        Dain Sundstrom added a comment -

        Committed a fix for this specific problem, and created a JIRA for converting all default values to non-primitive types. This way only configured default values will be set.

        Sending src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java
        Sending src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java
        Transmitting file data ..
        Committed revision 558850.

        Show
        Dain Sundstrom added a comment - Committed a fix for this specific problem, and created a JIRA for converting all default values to non-primitive types. This way only configured default values will be set. Sending src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java Sending src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java Transmitting file data .. Committed revision 558850.
        Hide
        Manoj Chaudhary added a comment -

        Is there a workaround for this one since 1.3 is not released yet.

        Show
        Manoj Chaudhary added a comment - Is there a workaround for this one since 1.3 is not released yet.

          People

          • Assignee:
            Dain Sundstrom
            Reporter:
            Kimberly Baer
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development