You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2006/11/14 01:12:52 UTC

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

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;