This is an automated email from the git hooks/post-receive script. New commit to annotated tag v3.0-alpha-3.1 in repository topia. See https://gitlab.nuiton.org/nuiton/topia.git commit f09d8bfcb3e35b0e53aca696c22beed08e462c6b Author: Tony Chemit <chemit@codelutin.com> Date: Thu Oct 31 22:35:50 2013 +0000 fixes #2882: Hibernate factory is closed by a child context --- .../topia/framework/AbstractTopiaContext.java | 30 ++++++++++++++++------ .../topia/framework/TopiaConnectionProvider.java | 4 +-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java b/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java index a0ee2c9..8843682 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java @@ -904,7 +904,7 @@ public class AbstractTopiaContext implements TopiaContext, TopiaContextImplement } } - // on se desenregistre du context pere et on ferme les connexions si + // on se desenregistre du context pere et on ferme les connexions si // on est pas le root context if (!equals(getRootContext())) { closed = true; @@ -927,16 +927,25 @@ public class AbstractTopiaContext implements TopiaContext, TopiaContextImplement } /** - * Pour le context root on ferme tous les fils, et la factory hibernate. + * tchemit 2013-01-31 : do nothing on finalize we MUST control cleaning + * of resources. + * + * //Pour le context root on ferme tous les fils, et la factory hibernate. */ @Override protected void finalize() throws Throwable { - if (hibernateFactory != null) { - closeContext(); - hibernateFactory.close(); - closed = true; - log.debug("TopiaContext finalized"); +// if (hibernateFactory != null) { +// closeContext(); +// hibernateFactory.close(); +// closed = true; +// log.debug("TopiaContext finalized"); +// } + if (!closed) { + + // means resource was not well closed, can't accept this! + throw new TopiaException("TopiaContext "+this+" was not closed!"); } + super.finalize(); } @Override @@ -1264,7 +1273,12 @@ public class AbstractTopiaContext implements TopiaContext, TopiaContextImplement Query query = tx.getHibernate().createSQLQuery(sql); query.executeUpdate(); tx.closeContext(); - root.finalize(); + // Do not invoke finalize here, we are not garbage collector... + // duplicate then the previous code of the finalize method + root.closeContext(); + root.hibernateFactory.close(); + root.closed = true; +// root.finalize(); } catch (Throwable eee) { throw new TopiaException( String.format("Error %s on clear operation", eee.getMessage()), eee); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java b/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java index c8918dc..76c7e3a 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java @@ -290,8 +290,8 @@ public class TopiaConnectionProvider implements ConnectionProvider, Configurable @Override public void stop() { - if (log.isDebugEnabled()) { - log.debug("cleaning up connection pool: " + url); + if (log.isInfoEnabled()) { + log.info("cleaning up connection pool: " + url); } for (Connection connection : pool) { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.