Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Getting Stale Connection using OracleDataSource with OCI driver - Please Help URGENT

 
Caeser smith
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi All,

I am getting stale connection error when there is no requests to the database from my java application for couple of hours.

Little background about my application:
Its a simple java application runned on Linux box with OCI (type driver). Dont ask me why OCI, why not thin. I am using OracleDataSource and OracleConnectionCacheManager for maintaining the cache of connection objects. Here is the code snippet:


The error is as follows:

ConnectionManager.java:getConnection:87 - Exception while getting Connection object:
java.sql.SQLException: Invalid or Stale Connection found in the Connection Cache
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:390)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:404)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:189)

Please let me know what am i missing. I will be very thankful to you.

Many THanks
true friend




[added code tags]
 
Jeanne Boyarsky
author & internet detective
Marshal
Posts: 34422
347
Eclipse IDE Java VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Does the caller of this code close the connection when done with it?

Another possibility that your datasource is not sized correctly. Some datasources need the minimum size to zero or they hang on to open connections.
 
Caeser smith
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Jeanne Boyarsky wrote:Does the caller of this code close the connection when done with it?

Another possibility that your datasource is not sized correctly. Some datasources need the minimum size to zero or they hang on to open connections.


Hi Jeanne,

Thanks for your reply.
The caller code is closing the connection object. I am pretty sure about it. After some research, i have found the same suggestion as you mentioned above(making the minimum size to zero).

I have talked to my DBA and according to him on the database, the connection objects are closed if they are idle for 30 mins. My pool minimum size is 1, hence if there is no requests to the DB for more than 30 mins, that connection object is becoming stale.

Having said that, I am still not able to understand the functionality of refreshCache(), why it is not refreshing the invalid connections.

Any comments on this will be appreciated. thanks
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic