commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phil Steitz <phil.ste...@gmail.com>
Subject Re: [dbcp] Abandon Connection - not Logging in standalone
Date Fri, 24 Jul 2015 23:33:41 GMT
On 7/23/15 4:18 PM, Bernd Eckenfels wrote:
> Hello,
>
> I noticed that with Oracle drivers you cannot "kill" a busy connection
> by closing it (since close(), _getPC(), isOpen() and stmt.close() all
> will synchronize on the (busy) physical connection.
>
> I noticed this in a custom persistence layer, so I thought to check out
> if DBCP handles this situation.

DBCP does nothing special itself. It relies on JDBC drivers to open
and close connections.
>
> I have a test program here:
>
> https://gist.github.com/ecki/345ee08ac97820972fe7
>
> First of all it does not log DBCP messages. I am not sure what is
> needed to get it going. As you can see in the output the deliberate
> debug() message is printed so the general LogFactory should be set up.

DBCP itself generates very few log messages.   You should be getting
those.  See below, though, for what you are looking for.
>
> When I run the program with acfg.setRemoveAbandonedTimeout(12) it
> suceeds, since the c3 is only idle for 10s. When I run it with (4) it
> will (so it seems) close the connection and I get a exception on next
> use. However I dont see a log message about the abandoned connection
> and the usage tracking. Ideas?

Do you see the abandoned object stack trace on the console
(System.out)?  The abandoned trace is not logged by DBCP.  It is
Commons Pool that generates the abandoned trace and writes it to the
Printwriter configured via its setLogWriter method.  The default is
System.out.
>
> A second thing, from the abandoned tracker I had the impression the
> usage is counted at the begin of exec.

Correct.

>  So if a execution takes 20s as
> in my case, it should be considered abandoned. But it seems not to be
> the case. Is it recognizing it is busy when the exec does not return?

No, it will try to close the connection when the idle object evictor
runs.  If the close raises an exception, you should see a stack
trace on System.err.  You don't see that?

Phil

> If this is the case, is there also a way to kill/destroy connections
> beeing used too long?
>
> Gruss
> Bernd
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message