commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 13235] New: - referenced UserPassKey instances get erroneously returned to the pool and subsequently reinitialized
Date Thu, 03 Oct 2002 06:23:29 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13235>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13235

referenced UserPassKey instances get erroneously returned to the pool and subsequently reinitialized

           Summary: referenced UserPassKey instances get erroneously
                    returned to the pool and subsequently reinitialized
           Product: Commons
           Version: Nightly Builds
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Blocker
          Priority: Other
         Component: Dbcp
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: roytmana@peacetech.com


I discovered this problem because my Jdbc2PoolDataSource would exaust its 
capacyty with no apparen reason. So I did some debugging and found out that An 
instance of UserPassKey which is referenced by 
GenericKeyedObjectPool._activeMap gets returned to a pool and reinitialized (so 
username/password becomes null). After that all subsequent returnObject() calls 
fail to decrement count in _activeMap 

This bug is a blocker. Jdbc2PoolDataSource can not be used while it is present.
My personal opinion is that keys should be immutable making them mutable and 
pooling them is asking for troubles. May be a user name keyed map of 
*immutable* UserPassKey instances is a safer way to avoid needless object 
creation.
Another thing. I do not understand why you need to have static map of 
datasources. I suppose you do it to make sure you do not create pool over and 
over again when jndi object factory is asked for an instance. I believe
Tomcat's environment jndi will cache data source instance after first lookup 
and will not recreate it again  but return cached instance instead.

I understand it is not a politically correct to ask for timeframe :-) but if 
you can give me an idea when do you think you can fix it I would greatly 
appreciate. If you feel it will take a while I will probably will have to write 
my own lite weight version of jdbc2 pool because I need it soon.

Pease let me know if I can help you in any way

Alex
 
Please analyze following debug output. @21726407 and other @#### are identity 
hash codes of UserPassKey instances

getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@21726407(USORG, peacetech, false)
=1} :: UserPassKey@21726407(USORG, peacetech, false
 RETURN: totalActive=0, activeMap={} :: UserPassKey@21726407(USORG, peacetech, 
false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=1} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=1} :: 
UserPassKey@21726407(USORG, peacetech, false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=2} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=2} :: 
UserPassKey@21726407(USORG, peacetech, false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=3} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=3} :: 
UserPassKey@21726407(USORG, peacetech, false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=4} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=4} :: 
UserPassKey@21726407(USORG, peacetech, false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=5} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=5} :: 
UserPassKey@21726407(USORG, peacetech, false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=6} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=6} :: 
UserPassKey@21726407(USORG, peacetech, false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=7} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=7} :: 
UserPassKey@21726407(USORG, peacetech, false)
getConnection(USORG, peacetech)
 BORROW: totalActive=1, activeMap={UserPassKey@14327460(USORG, peacetech, true)
=8} :: UserPassKey@14327460(USORG, peacetech, true)
 RETURN: totalActive=0, activeMap={UserPassKey@14327460(null, null, true)=8} :: 
UserPassKey@21726407(USORG, peacetech, false)

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message