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;