Hi Chris,

> > Hi all,
> > 
> > Thanks for your responses. I think I've found the problem.
> > 
> > My wrapping class which detects the invocation of the close() method to 
> > decrement its count is no longer decrementing its count because 
> > method.getDeclaringClass() has changed from java.sql.Connection to 
> > java.lang.AutoCloseable.
> > 
> > Is it safe to check for either java.sql.Connection or 
> > java.lang.AutoCloseable?
> > 
> > .. or should I just check for the "close()" method invocation, based on the 
> > fact that I'm not wrapping anything (here) that I shouldn't be counting?

> That depends upon the point of the whole thing. What, um, is the point 
> of the whole thing?

The wrapping class is to limit the number of active connections, waiting up to 
a configured time for one to become idle if necessary. I can't recall if this 
was because the timeout or the limit was not configurable when this was first 
written in 2007. The count is decremented if the called method is "close" and 
it's from the expected Class. Previously this was java.sql.Connection, now it 
also accepts "close" from java.lang.AutoCloseable to decrement the count.

As the count wasn't being decremented, the active concurrent limit was quickly 
(believed to be) reached.

I discussed this with a colleague who had previously worked with this 
application. There was some consternation about the approach but it was agreed 
that this was the least risk answer - for an application we're dropping support 
for in December, it is not worth rewriting. This will at least enable 
deployments to address vulnerabilities fixed in 9.0.71+.

Thanks,
Tim

Reply via email to