https://issues.apache.org/bugzilla/show_bug.cgi?id=52002

Kevin Greiner <kevin.grei...@compsol.cc> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #27751|0                           |1
        is obsolete|                            |

--- Comment #1 from Kevin Greiner <kevin.grei...@compsol.cc> 2011-11-01 
00:02:55 UTC ---
Created attachment 27879
  --> https://issues.apache.org/bugzilla/attachment.cgi?id=27879
Patch to create new test case and fix.

This patch directly addresses the defect in the ConnectionPool's
setupConnection method.  This method creates a new proxy instance each time it
is called.  However, unlike an ordinary object where each instance is unique,
proxy objects store their state in their InvocationHandler object. In the
original implementation, calls to getConnection() returned a new proxy instance
and, as a side effect, returned all previous proxies to the same
PooledConnection to an open state.

In this patch, I've created a new interceptor (ProxyCutOffConnection) to act as
a unique, and disposable, head to a shared interceptor chain.  Each proxy
instance created by setConnection uses its own unique ProxyCutOffConnection as
its handler.  When 'close' is called for the first time, ProxyCutOffConnection
first passes it to the next interceptor to perform all normal close logic then
it severs its connection with that interceptor.  As a result, all future calls
using this proxy object irrevocably fail with a connection closed error.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to