|
I believe that this issue has nothing to do with
Do you have steps to reproduce?
Yes I have.
I will try to describe it in some steps, if you need me to write a test program just say so. 1 Have a program start 50 threads, that each execute "select current_timestamp from mon$database" 200 times. The goal here is to create alot of connections to the database. Make sure that the connection is fetched and returned to the connectionpool every time you execute this statement. 2 Wait for the 20 threads to finish. 3 Have a single thread execute "select current_timestamp from mon$database" for about a minute. Make sure that the connection is fetched and returned to the connectionpool every time you execute this statement. If the Connection lifetime is set to 15 seconds, this should give the ConnectionPoolManager enough time to close connections that has not been "checked out" of the connectionpool for that period of time. However connections in the connectionpool are not closed, because the single thread cycles through every connection in the connectionpool, because of a FIFO queue is used. I hope this describes the problem better. The core problem is that a single thread making alot of requests to the database can keep alot of connections/attachments to the server alive. Yeah. The test program wood be great.
Here is at test project that demoostrates the problem. Please have a look at the connectionstring at supply your own information to a database
|
See http://tracker.firebirdsql.org/browse/DNET-585