[ 
https://issues.apache.org/jira/browse/DBCP-594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17800784#comment-17800784
 ] 

Shaktisinh Jhala commented on DBCP-594:
---------------------------------------

I doubt I fully understood your last comment [~ggregory] 

If the ask is to provide the failing use case if this issue is not fixed, there 
here it is:

In the case when the the actual DB connection is closed (in this case the 
PgConnection.queryExecutor.closed = true) then every time such connection is 
used to prepare the statement it will give the error and it will not be 
discarded from the pool.  

> DBCP Does not check the validity of DB connection at the time creating 
> preparedStatement
> ----------------------------------------------------------------------------------------
>
>                 Key: DBCP-594
>                 URL: https://issues.apache.org/jira/browse/DBCP-594
>             Project: Commons DBCP
>          Issue Type: Bug
>    Affects Versions: 2.9.0
>         Environment: OS: CentOS
> DB: PostgreSQL
> Java: openjdk 17.0.8.1 2023-08-24
>            Reporter: Shaktisinh Jhala
>            Priority: Major
>         Attachments: ExceptionStackTrace.txt
>
>
> Recently we observed an issue of "This connection has been closed." while 
> borrowing prepared statement from the pool. 
> It was trying to create a new PreparedStatement using the pooled connection 
> object. And the Pooled connection object was already closed due to some 
> reason.
> There are two configurations testOnCreate and testOnBorrow ensures that the 
> connection is validated after create and before borrow. In case of connection 
> is not valid, DBCP discards such connection from the pool and will not be 
> used in future. However, in the current scenario, if there is some connection 
> in the pool which is in closed state, it will throw above error every time 
> when it will try to create prepareStatement with it. As the actual 
> PgConnection object is wrapped with the DBCP object the application cannot 
> close the actual DB connection. So, the DBCP should take care of this error 
> and discard such connection from the pool in case of this error and should 
> not propagate the error to the application. 
> Attached is the exception stack trace for this issue.
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to