I suppose that debug mode will be invisible for user.
I imagine this mode as following. PM has collection of "free" resources
and collection of "using" resources. For simplicity I describe life
cycle for connections. When user get connection then is created object
with debug info and put this object to "using" resources. When
connection is returned by user then debug info is removed from "using"
collection. Thus we will have collection of "using" objects (with debug
info) at "current" time point. Therefore with help of debug info we can
decide what resources are not released for long time and can be
potential "leaks". In debug info object we can store resource object,
datetime when it has been taken up and stack trace that describe who
took up resource.
Amit Deshpande wrote:
> Well in that case the user will have to supply us with an identifier
> for each resource obtaining a connection which we store as apart of
> the connection object.
> How do we accomodate this resourec identifier for debugging purposes
> only ?
> - Amit
>
>> Stefaan Delanghe wrote:
>>
>>> 5.A unused connection "sweeper", liken this to a garbase collector ,
>>> unused
>>> connections or timed out connections not returned to the pool are
>>> regained.
>>>
>> I think that pool manager (PM) must has debug mode. In this mode PM
>> have to keep a list of records when and who (this can be stack trace)
>> get some rsource and didn't release it for some time period. This
>> future will help to debug "resource leaks".
>
|