[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1364) Defensive check of isClosed when obtaining a connection from ConnectionManager
Gonzalo Vasquez (JIRA)
noreply at atlassian.com
Tue Oct 23 15:27:39 EDT 2007
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1364?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_28522 ]
Gonzalo Vasquez commented on HHH-1364:
--------------------------------------
Regarding:
"And as for non-cleared ThreadLocal-bound Sessions, this is the behavior I'd want to see anyway since it indicates problems in your thread cleanup code."
Ok, I might have problems in my cleanup code, but how do I identify them? In my particular case, the WebContainer (WAS 6) is the one which is "killing" unfinished threads when I make hot-updates of the deployed EAR. When resuming application operation, ConnectionManager doesn't come up gracefully, reporting the "connection manager has been closed" message.
Any comments appreciated
> Defensive check of isClosed when obtaining a connection from ConnectionManager
> ------------------------------------------------------------------------------
>
> Key: HHH-1364
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1364
> Project: Hibernate3
> Issue Type: Improvement
> Components: core
> Affects Versions: 3.1
> Environment: Particularly bad in J2EE environments, where thread stale thread-local connections show up in an unpredictable manner as threads are re-used.
> Reporter: Damon Feldman
> Assignee: Steve Ebersole
> Priority: Minor
> Fix For: 3.1.2
>
> Original Estimate: 20 minutes
> Remaining Estimate: 20 minutes
>
> A null connection is returned to the caller, causing a NPE in another part of the system if a connection is set to null AND the ConnectionManager is closed.
> ---- EXISTING CODE from ConnectionManager ----
> /**
> * Retrieves the connection currently managed by this ConnectionManager.
> * <p/>
> * Note, that we may need to obtain a connection to return here if a
> * connection has either not yet been obtained (non-UserSuppliedConnectionProvider)
> * or has previously been aggressively released (if supported in this environment).
> *
> * @return The current Connection.
> *
> * @throws HibernateException Indicates a connection is currently not
> * available (we are currently manually disconnected).
> */
> public Connection getConnection() throws HibernateException {
> if ( connection == null && !isClosed ) {
> openConnection();
> }
> return connection;
> }
> --------------------- RECOMMENDATION -----------
> public Connection getConnection() throws HibernateException {
> if ( connection == null) {
> if(isClosed )
> throw new HibernateException("A Connection Manager that has been closed cannot supply a Connection.");
> openConnection();
> }
> return connection;
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list