You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Dan Kearns (JIRA)" <ji...@apache.org> on 2007/06/20 01:05:25 UTC

[jira] Updated: (ODE-149) Ode should startup faster when there are many DUs and Processes

     [ https://issues.apache.org/jira/browse/ODE-149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Kearns updated ODE-149:
---------------------------

    Description: 

Startup currently deserializes deployment units, process configurations, and process properties. The default queries for this in hibernate become very slow when there are many of both due to an ill-advised outer join (eg with 10,000 deployment units and 30,000 processes the query would look at 300 million rows when it only needs to look at 30,000 - a difference on the order of 15 minutes). Following is a workaround for hibernate. OpenJpa may need similar fix. 

bpel-store: org.apache.ode.store.hib.ConfStoreConnectionHib.java, replace getDeploymentUnits with:

    @SuppressWarnings("unchecked")
    public Collection<DeploymentUnitDAO> getDeploymentUnits() {
      List joined =  _session.createSQLQuery("SELECT * FROM STORE_DU du, "
                                   + "STORE_PROCESS proc where du.NAME=proc.DU")
        .addEntity("du",DeploymentUnitDaoImpl.class)
        .addEntity("proc",ProcessConfDaoImpl.class )
        .addJoin("processes","du.processes")
        .list();
      Set allDu = new HashSet();
      for(Object o : joined) {
        Object[] obj = (Object[])o;
        allDu.add(obj[0]);
      };
      return allDu;
    }

  was:

Startup currently deserializes deployment units, process configurations, and process properties. The default queries for this in hibernate become very slow when there are many of both due to an ill-advised outer join (eg with 10,000 deployment units and 30,000 processes the query would look at 300 million rows when it only needs to look at 30,000 - a difference on the order of 15 minutes). Following is a workaround for hibernate. OpenJpa may need similar fix. 


    @SuppressWarnings("unchecked")
    public Collection<DeploymentUnitDAO> getDeploymentUnits() {
      List joined =  _session.createSQLQuery("SELECT * FROM STORE_DU du, "
                                   + "STORE_PROCESS proc where du.NAME=proc.DU")
        .addEntity("du",DeploymentUnitDaoImpl.class)
        .addEntity("proc",ProcessConfDaoImpl.class )
        .addJoin("processes","du.processes")
        .list();
      Set allDu = new HashSet();
      for(Object o : joined) {
        Object[] obj = (Object[])o;
        allDu.add(obj[0]);
      };
      return allDu;
    }


> Ode should startup faster when there are many DUs and Processes
> ---------------------------------------------------------------
>
>                 Key: ODE-149
>                 URL: https://issues.apache.org/jira/browse/ODE-149
>             Project: Ode
>          Issue Type: Improvement
>          Components: BPEL Runtime
>    Affects Versions: 1.0-incubating
>            Reporter: Dan Kearns
>
> Startup currently deserializes deployment units, process configurations, and process properties. The default queries for this in hibernate become very slow when there are many of both due to an ill-advised outer join (eg with 10,000 deployment units and 30,000 processes the query would look at 300 million rows when it only needs to look at 30,000 - a difference on the order of 15 minutes). Following is a workaround for hibernate. OpenJpa may need similar fix. 
> bpel-store: org.apache.ode.store.hib.ConfStoreConnectionHib.java, replace getDeploymentUnits with:
>     @SuppressWarnings("unchecked")
>     public Collection<DeploymentUnitDAO> getDeploymentUnits() {
>       List joined =  _session.createSQLQuery("SELECT * FROM STORE_DU du, "
>                                    + "STORE_PROCESS proc where du.NAME=proc.DU")
>         .addEntity("du",DeploymentUnitDaoImpl.class)
>         .addEntity("proc",ProcessConfDaoImpl.class )
>         .addJoin("processes","du.processes")
>         .list();
>       Set allDu = new HashSet();
>       for(Object o : joined) {
>         Object[] obj = (Object[])o;
>         allDu.add(obj[0]);
>       };
>       return allDu;
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.