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:03:25 UTC

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

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. 


    @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.


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

Posted by "Dan Kearns (JIRA)" <ji...@apache.org>.
     [ 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.