You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/10/16 14:10:56 UTC
svn commit: r825859 -
/labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj
Author: simoneg
Date: Fri Oct 16 12:10:56 2009
New Revision: 825859
URL: http://svn.apache.org/viewvc?rev=825859&view=rev
Log:
LABS-472: Added a mutex to avoid concurrent initialization of non-provided JPA manager
Modified:
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj
Modified: labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj?rev=825859&r1=825858&r2=825859&view=diff
==============================================================================
--- labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj (original)
+++ labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj Fri Oct 16 12:10:56 2009
@@ -28,16 +28,20 @@
*/
public aspect CheckJPAManager {
+ private String mutex = "CheckJPAManager_mutex";
+
pointcut jpaDBmethod(JPADatabase db) : execution(* JPADatabase+.*(..)) && target(db);
before(JPADatabase db) : jpaDBmethod(db) {
if (db.manager == null) {
- EntityManagerFactory f = createFactory();
- db.manager = f.createEntityManager();
- db.manualManager = true;
- EntityTransaction tx = db.manager.getTransaction();
- tx.begin();
- db.transaction = tx;
+ synchronized(mutex) {
+ EntityManagerFactory f = createFactory();
+ db.manager = f.createEntityManager();
+ db.manualManager = true;
+ EntityTransaction tx = db.manager.getTransaction();
+ tx.begin();
+ db.transaction = tx;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org