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: [email protected]
For additional commands, e-mail: [email protected]