Commons Dbcp
  1. Commons Dbcp
  2. DBCP-163

[dbcp] Use setQueryTimeout in combination with validationQuery to recover from network problems

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 1.1
    • Fix Version/s: 1.3
    • Labels:
      None
    • Environment:

      Operating System: Linux
      Platform: Other

      Description

      When the network connection between tomcat 4.1.29 and database (experienced with
      sybase ASE 12.5) is lost, the 'Connection' hangs indefinitely.

      It hangs in the line of code "con = DatasourceObject.getConnection();"

      None of the other options in the connection pooling stuff - add info: used
      SharedPoolDatasourceFactory in dbcp - like maxWait / validationQuery
      /removeAbandoned/ removeAbandonedTimeout etc doesnt timeout the connection.

      Analysis: When the network connection to the database is fine (normal scenario)-
      the dbcp gets a connection from the datasource (connection pool)- sets three
      params - autocommit, readonly and isolation level for the connection object and
      returns this improved connection object to the calling class.

      Now say the network connection is lost, and the unaware application requests for
      a connection from the pool, gets the connection object and then tries to set the
      first of three params (autocommit- mentioned above) where it hangs.

      None of the timeout params work in this scenario. Setting a validationQuery
      tries its validation only after getting the connection object which never happens.

      Soln(possibility): after getting the raw connection object - run a validation
      query (or any call to database)with a stmt.setQueryTimeout() set to say 3-5 secs

      • or say configurable by user - and then catch the exception (noroutetohost
        exception) to throw it back.

        Activity

        Phil Steitz made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Phil Steitz made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Phil Steitz made changes -
        Bugzilla Id 30391
        Fix Version/s 1.3 [ 12311977 ]
        Henri Yandell made changes -
        Affects Version/s 1.1 Final [ 12311719 ]
        Henri Yandell made changes -
        Affects Version/s 1.1 Final [ 12311652 ]
        Project Commons [ 12310458 ] Commons Dbcp [ 12310469 ]
        Component/s Dbcp [ 12311109 ]
        Assignee Jakarta Commons Developers Mailing List [ commons-dev@jakarta.apache.org ]
        Key COM-1449 DBCP-163
        Henri Yandell made changes -
        Field Original Value New Value
        issue.field.bugzillaimportkey 30391 12341601
        cryptic created issue -

          People

          • Assignee:
            Unassigned
            Reporter:
            cryptic
          • Votes:
            5 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development