Author: mriou
Date: Wed Oct 22 08:57:47 2008
New Revision: 707107

URL: http://svn.apache.org/viewvc?rev=707107&view=rev
Log:
ODE-395 MessageExchangeDAOs of in-memory processes are kept in memory despite 
release()

Modified:
    
ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/BpelDAOConnection.java
    
ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java
    
ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
    
ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java
    ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java
    
ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java

Modified: 
ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/BpelDAOConnection.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/BpelDAOConnection.java?rev=707107&r1=707106&r2=707107&view=diff
==============================================================================
--- 
ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/BpelDAOConnection.java 
(original)
+++ 
ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/BpelDAOConnection.java 
Wed Oct 22 08:57:47 2008
@@ -118,5 +118,7 @@
     MessageExchangeDAO createMessageExchange(String mexId, char dir);
 
     MessageExchangeDAO getMessageExchange(String mexid);
+    
+    void releaseMessageExchange(String mexid);
 
 }

Modified: 
ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java?rev=707107&r1=707106&r2=707107&view=diff
==============================================================================
--- 
ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java
 (original)
+++ 
ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java
 Wed Oct 22 08:57:47 2008
@@ -83,8 +83,12 @@
             throw e;
         }
     }
+       
+    public void releaseMessageExchange(String mexid) {
+               // TODO Auto-generated method stub
+       }
 
-    public ProcessDAO createProcess(QName pid, QName type, String guid, long 
version) {
+       public ProcessDAO createProcess(QName pid, QName type, String guid, 
long version) {
         HProcess process = new HProcess();
         process.setProcessId(pid.toString());
         process.setTypeName(type.getLocalPart());

Modified: 
ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java?rev=707107&r1=707106&r2=707107&view=diff
==============================================================================
--- 
ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
 (original)
+++ 
ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
 Wed Oct 22 08:57:47 2008
@@ -89,6 +89,10 @@
         return ret;
     }
 
+    public void releaseMessageExchange(String mexid) {
+               // TODO Auto-generated method stub
+       }
+    
     public ProcessDAO createProcess(QName pid, QName type, String guid, long 
version) {
         ProcessDAOImpl ret = new ProcessDAOImpl(pid,type,guid,version);
         _em.persist(ret);

Modified: 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java?rev=707107&r1=707106&r2=707107&view=diff
==============================================================================
--- 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java
 (original)
+++ 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java
 Wed Oct 22 08:57:47 2008
@@ -351,6 +351,7 @@
     public void release() {
         __log.debug("Releasing mex " + getMessageExchangeId());
         _changes.add(Change.RELEASE);
+               _process.releaseMessageExchange(getMessageExchangeId());
     }
 
     public String toString() {

Modified: 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java?rev=707107&r1=707106&r2=707107&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java 
(original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java 
Wed Oct 22 08:57:47 2008
@@ -1001,6 +1001,11 @@
         return _inMemDao.getConnection().getMessageExchange(mexId);
     }
 
+       public void releaseMessageExchange(String mexId) {
+               if (isInMemory()) {
+                       _inMemDao.getConnection().releaseMessageExchange(mexId);
+               }
+       }
     /**
      * Schedule process-level work. This method defers to the server to do the 
scheduling and wraps the [EMAIL PROTECTED] Runnable} in a
      * try-finally block that ensures that the process is hydrated.

Modified: 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java?rev=707107&r1=707106&r2=707107&view=diff
==============================================================================
--- 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
 (original)
+++ 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
 Wed Oct 22 08:57:47 2008
@@ -247,6 +247,15 @@
         }
     }
 
+    public void releaseMessageExchange(String mexid) {
+               synchronized (_mexStore) {
+                       MessageExchangeDAO mexDao = _mexStore.remove(mexid);
+                       if (mexDao != null) {
+                               _mexList.remove(mexDao);
+                       }
+               }
+       }
+
     private int compareInstanceUsingKey(String key, ProcessInstanceDAO 
instanceDAO1, ProcessInstanceDAO instanceDAO2) {
         String s1 = null;
         String s2 = null;


Reply via email to