Author: mriou
Date: Mon Nov 13 16:12:51 2006
New Revision: 474600

URL: http://svn.apache.org/viewvc?view=rev&rev=474600
Log:
Synchronize didn't help much when several instances use the same static field. 
So once in a while, 2 different mex had the same id. Now using an AtomicLong 
instead of static long++.

Modified:
    
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java

Modified: 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java?view=diff&rev=474600&r1=474599&r2=474600
==============================================================================
--- 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
 (original)
+++ 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
 Mon Nov 13 16:12:51 2006
@@ -17,6 +17,7 @@
 
 import javax.xml.namespace.QName;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicLong;
 
 
 /**
@@ -26,16 +27,16 @@
     private Map<QName, ProcessDaoImpl> _store;
     private List<BpelEvent> _events = new LinkedList<BpelEvent>();
     private static Map<String,MessageExchangeDAO> _mexStore = 
Collections.synchronizedMap(new HashMap<String,MessageExchangeDAO>());
-    private static long counter = 0;
+    private static AtomicLong counter = new AtomicLong(0);
 
 
     BpelDAOConnectionImpl(Map<QName, ProcessDaoImpl> store) {
         _store = store;
     }
 
-    private synchronized String getId() {
-        return Long.toString(counter++);
-    }
+//    private synchronized String getId() {
+//        return Long.toString(counter++);
+//    }
 
     public ProcessDAO getProcess(QName processId) {
         return _store.get(processId);
@@ -144,7 +145,7 @@
     }
 
     public MessageExchangeDAO createMessageExchange(char dir) {
-        String id = getId();
+        String id = Long.toString(counter.getAndIncrement());
         MessageExchangeDAO mex = new MessageExchangeDAOImpl(dir,id);
         _mexStore.put(id,mex);
         return mex;


Reply via email to