Author: mriou Date: Thu Jan 18 12:55:02 2007 New Revision: 497571 URL: http://svn.apache.org/viewvc?view=rev&rev=497571 Log: The usage of iterate can cause deadlocks in some cases as a DB cursor relies on shared locks.
Modified: incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java Modified: incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java?view=diff&rev=497571&r1=497570&r2=497571 ============================================================================== --- incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java (original) +++ incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java Thu Jan 18 12:55:02 2007 @@ -18,37 +18,21 @@ */ package org.apache.ode.daohib.bpel; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - import org.apache.ode.bpel.common.BpelEventFilter; -import org.apache.ode.bpel.dao.CorrelationSetDAO; -import org.apache.ode.bpel.dao.PartnerLinkDAO; -import org.apache.ode.bpel.dao.ProcessInstanceDAO; -import org.apache.ode.bpel.dao.ScopeDAO; -import org.apache.ode.bpel.dao.ScopeStateEnum; -import org.apache.ode.bpel.dao.XmlDataDAO; +import org.apache.ode.bpel.dao.*; import org.apache.ode.bpel.evt.BpelEvent; import org.apache.ode.daohib.SessionManager; -import org.apache.ode.daohib.bpel.hobj.HBpelEvent; -import org.apache.ode.daohib.bpel.hobj.HCorrelationSet; -import org.apache.ode.daohib.bpel.hobj.HPartnerLink; -import org.apache.ode.daohib.bpel.hobj.HScope; -import org.apache.ode.daohib.bpel.hobj.HXmlData; +import org.apache.ode.daohib.bpel.hobj.*; import org.apache.ode.utils.SerializableUtils; import org.apache.ode.utils.stl.CollectionsX; import org.apache.ode.utils.stl.UnaryFunction; import org.apache.ode.utils.stl.UnaryFunctionEx; import org.hibernate.Criteria; -import org.hibernate.Hibernate; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; +import java.util.*; + /** * Hibernate-based [EMAIL PROTECTED] ScopeDAO} implementation. */ @@ -79,18 +63,16 @@ qry.setString(0,corrSetName); qry.setLong(1,_scope.getId()); HCorrelationSet cs; - Iterator iter = qry.iterate(); + List res = qry.list(); - if(!iter.hasNext()){ + if(res.size() > 0){ // if it doesn't exist, we make it cs = new HCorrelationSet(_scope, corrSetName); _scope.getCorrelationSets().add(cs); getSession().save(cs); - }else{ - cs = (HCorrelationSet)iter.next(); + } else { + cs = (HCorrelationSet)res.get(0); } - - Hibernate.close(iter); return new CorrelationSetDaoImpl(_sm, cs); } /** @@ -134,10 +116,10 @@ Query qry = getSession().createQuery(QRY_VARIABLE); qry.setString(0,varName); qry.setLong(1,_scope.getId()); - Iterator iter = qry.iterate(); + List res = qry.list(); - if(iter.hasNext()) - data = (HXmlData)iter.next(); + if(res.size() > 0) + data = (HXmlData)res.get(0); else{ data = new HXmlData(); data.setName(varName); @@ -145,9 +127,7 @@ _scope.getVariables().add(data); getSession().save(data); } - Hibernate.close(iter); return new XmlDataDaoImpl(_sm, data); - } /**