r2196 - in trunk/topia-persistence/src/main: java/org/nuiton/topia/framework resources/i18n
Author: tchemit Date: 2011-02-02 16:04:48 +0100 (Wed, 02 Feb 2011) New Revision: 2196 Url: http://nuiton.org/repositories/revision/topia/2196 Log: Anomalie #1279: beginTransaction can open hibernate session without closing them if problem occurs Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java trunk/topia-persistence/src/main/resources/i18n/topia-persistence_en_GB.properties trunk/topia-persistence/src/main/resources/i18n/topia-persistence_fr_FR.properties Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2011-01-31 13:33:00 UTC (rev 2195) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2011-02-02 15:04:48 UTC (rev 2196) @@ -755,8 +755,26 @@ // maintenant, sinon lorsque l'on fait des acces a la base, une // transaction par defaut est utilisé mais elle n'est jamais vraiment // fermé ce qui pose des problemes de lock sur les tables. - result.hibernate.beginTransaction(); + try { + result.hibernate.beginTransaction(); + } catch (Exception eee) { + // on a pas pu ouvrir la transaction, on faut donc tout fermer + // et declancher une exception + try { + result.hibernate.close(); + } catch (HibernateException e1) { + if (log.isErrorEnabled()) { + log.error("Could not close hibernate session", e1); + } + } + + throw new TopiaException( + I18n._("topia.persistence.error.open.transaction.failed", + eee.getMessage()), + eee); + } + // 20081217 : add child AFTER hibernate session is opened addChildContext(result); Modified: trunk/topia-persistence/src/main/resources/i18n/topia-persistence_en_GB.properties =================================================================== --- trunk/topia-persistence/src/main/resources/i18n/topia-persistence_en_GB.properties 2011-01-31 13:33:00 UTC (rev 2195) +++ trunk/topia-persistence/src/main/resources/i18n/topia-persistence_en_GB.properties 2011-02-02 15:04:48 UTC (rev 2196) @@ -14,6 +14,7 @@ topia.persistence.error.on.replicate=An error occurs while replicate operation \: %1$s topia.persistence.error.on.restore=An error occurs while restore operation \: %1$s topia.persistence.error.on.rollback=An error occurs while rollback operation \: %1$s +topia.persistence.error.open.transaction.failed=An error occurs while asking a new transaction \: %1$s topia.persistence.error.replicate.entity=Could not replicate entity '%1$s' pour following reason \: %2$s topia.persistence.error.replicate.on.same.context=Can not do a replication operation on same database. topia.persistence.error.rootContext.access=You are on root context, you MUST open a transaction to perform any database access. Modified: trunk/topia-persistence/src/main/resources/i18n/topia-persistence_fr_FR.properties =================================================================== --- trunk/topia-persistence/src/main/resources/i18n/topia-persistence_fr_FR.properties 2011-01-31 13:33:00 UTC (rev 2195) +++ trunk/topia-persistence/src/main/resources/i18n/topia-persistence_fr_FR.properties 2011-02-02 15:04:48 UTC (rev 2196) @@ -14,6 +14,7 @@ topia.persistence.error.on.replicate=Une erreur est apparue pendant la replication \: %1$s topia.persistence.error.on.restore=Une erreur est apparue pendant le restore \: %1$s topia.persistence.error.on.rollback=Une erreur est apparue pendant le rollback \: %1$s +topia.persistence.error.open.transaction.failed=Une erreur est apparue pendant la demande de transaction \: %1$s topia.persistence.error.replicate.entity=Echec de replication de l'entite %1$s\npour la raison suivante \: %2$s topia.persistence.error.replicate.on.same.context=Impossible de dupliquer dans la m\u00EAme base topia.persistence.error.rootContext.access=Vous \u00EAtes sur le root context, vous devez ouvrir une transaction pour pouvoir acc\u00E9der aux donn\u00E9es.
participants (1)
-
tchemit@users.nuiton.org