Thomas,

     Here is the thread dump. All the threads are blocked on
"pool-2-thread-43" which is blocked by "pool-2-thread-110"


"pool-2-thread-50" - Thread t@88
   java.lang.Thread.State: BLOCKED on java.lang.Class@1308abb owned by:
pool-2-thread-43
        at java.sql.DriverManager.getConnection(DriverManager.java:138)
        at
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173)
        at
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164)
        at
org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
        at
org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
        at
org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
        at
org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:572)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:661)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:701)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:165)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:171)
        at
org.springframework.jdbc.core.simple.SimpleJdbcTemplate.query(SimpleJdbcTemplate.java:178)
        at
com.transerainc.rtmc.dao.CurrentValuesDAO.getQueues(CurrentValuesDAO.java:472)
        at
com.transerainc.rtmc.dao.CurrentValuesDAO$$FastClassByCGLIB$$d6524a80.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:617)
        at
com.transerainc.rtmc.dao.CurrentValuesDAO$$EnhancerByCGLIB$$37941adb.getQueues(<generated>)
        at
com.transerainc.rtmc.bo.CurrentValuesBO.getQueueSnapshotReportData(CurrentValuesBO.java:427)
        at
com.transerainc.rtmc.handler.CallSnapshotHandler.handleQueuePointReport(CallSnapshotHandler.java:117)
        at
com.transerainc.rtmc.handler.CallSnapshotHandler.handleRequest(CallSnapshotHandler.java:75)
        at
com.transerainc.rtmc.ui.UISimulatorTask.run(UISimulatorTask.java:31)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
        at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:146)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:170)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
        at java.lang.Thread.run(Thread.java:595)
------
------
------

"pool-2-thread-43" - Thread t@81
   java.lang.Thread.State: BLOCKED on org.h2.engine.Database@189c09e owned
by: pool-2-thread-110
        at org.h2.engine.Engine.openSession(Engine.java:70)
        at org.h2.engine.Engine.openSession(Engine.java:158)
        at org.h2.engine.Engine.createSessionAndValidate(Engine.java:137)
        at org.h2.engine.Engine.createSession(Engine.java:120)
        at org.h2.engine.Engine.createSession(Engine.java:28)
        at
org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:289)
        at org.h2.engine.SessionRemote.createSession(SessionRemote.java:265)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
        at org.h2.Driver.connect(Driver.java:72)
        at java.sql.DriverManager.getConnection(DriverManager.java:525)
        at java.sql.DriverManager.getConnection(DriverManager.java:140)
        at
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173)
        at
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164)
        at
org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
        at
org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
        at
org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
        at
org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:572)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:661)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:701)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:177)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:190)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForInt(NamedParameterJdbcTemplate.java:217)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForInt(NamedParameterJdbcTemplate.java:222)
        at
org.springframework.jdbc.core.simple.SimpleJdbcTemplate.queryForInt(SimpleJdbcTemplate.java:104)
        at
com.transerainc.rtmc.dao.CurrentAgentValuesDAO.getTotalAgentsByTeams(CurrentAgentValuesDAO.java:520)
        at
com.transerainc.rtmc.dao.CurrentAgentValuesDAO$$FastClassByCGLIB$$a8144c1b.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:617)
        at
com.transerainc.rtmc.dao.CurrentAgentValuesDAO$$EnhancerByCGLIB$$6224ff44.getTotalAgentsByTeams(<generated>)
        at
com.transerainc.rtmc.bo.CurrentAgentValuesBO.getMultiTeamAgentSnapshotData(CurrentAgentValuesBO.java:321)
        at
com.transerainc.rtmc.handler.AgentSnapshotHandler.handleMultiTeamSnaphostRequest(AgentSnapshotHandler.java:144)
        at
com.transerainc.rtmc.handler.AgentSnapshotHandler.handleRequest(AgentSnapshotHandler.java:93)
        at
com.transerainc.rtmc.ui.UISimulatorTask.run(UISimulatorTask.java:31)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
        at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:146)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:170)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
        at java.lang.Thread.run(Thread.java:595)


"pool-2-thread-110" - Thread t@148
   java.lang.Thread.State: RUNNABLE
        at org.h2.index.MultiVersionCursor.next(MultiVersionCursor.java:95)
        at org.h2.index.IndexCursor.next(IndexCursor.java:222)
        at org.h2.table.TableFilter.next(TableFilter.java:342)
        at org.h2.command.dml.Select.queryGroup(Select.java:311)
        at org.h2.command.dml.Select.queryWithoutCache(Select.java:592)
        at org.h2.command.dml.Query.query(Query.java:257)
        at org.h2.command.dml.Query.query(Query.java:227)
        at org.h2.command.CommandContainer.query(CommandContainer.java:78)
        at org.h2.command.Command.executeQuery(Command.java:132)
        at
org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96)
        at
org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:643)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:586)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:661)
        at
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:701)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:165)
        at
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:171)
        at
org.springframework.jdbc.core.simple.SimpleJdbcTemplate.query(SimpleJdbcTemplate.java:178)
        at
com.transerainc.rtmc.dao.CurrentAgentValuesDAO.getAuxiliaryData(CurrentAgentValuesDAO.java:974)
        at
com.transerainc.rtmc.dao.CurrentAgentValuesDAO$$FastClassByCGLIB$$a8144c1b.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:617)
        at
com.transerainc.rtmc.dao.CurrentAgentValuesDAO$$EnhancerByCGLIB$$6224ff44.getAuxiliaryData(<generated>)
        at
com.transerainc.rtmc.bo.CurrentAgentValuesBO.setAuxiliaryData(CurrentAgentValuesBO.java:837)
        at
com.transerainc.rtmc.bo.CurrentAgentSkillValuesBO.getSkillAgentSnapshotReportData(CurrentAgentSkillValuesBO.java:423)
        at
com.transerainc.rtmc.handler.AgentSnapshotHandler.handleSkillAgentReport(AgentSnapshotHandler.java:234)
        at
com.transerainc.rtmc.handler.AgentSnapshotHandler.handleRequest(AgentSnapshotHandler.java:75)
        at
com.transerainc.rtmc.ui.UISimulatorTask.run(UISimulatorTask.java:31)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
        at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:146)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:170)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
        at java.lang.Thread.run(Thread.java:595)


Thanks,
Suresh


On Tue, Apr 19, 2011 at 11:05 PM, suresh kumar <[email protected]>wrote:

> Thomas,
>
>      I am in the assumption that if I use separate database for each table
> the syn on the executeQuery should do only database.
> But when I look at the thread-dump all the queries are blocked by single
> thread (even they are on different database).
>
> Here are the connection urls of each db.
>
> rtmch2db.driver.class.name = org.h2.Driver
> rtmch2db1.url = jdbc:h2:mem:rtmch2db1;MVCC=TRUE;DB_CLOSE_DELAY=-1
> rtmch2db2.url = jdbc:h2:mem:rtmch2db2;MVCC=TRUE;DB_CLOSE_DELAY=-1
> rtmch2db3.url = jdbc:h2:mem:rtmch2db3;MVCC=TRUE;DB_CLOSE_DELAY=-1
> rtmch2db4.url = jdbc:h2:mem:rtmch2db4;MVCC=TRUE;DB_CLOSE_DELAY=-1
> rtmch2db5.url = jdbc:h2:mem:rtmch2db5;MVCC=TRUE;DB_CLOSE_DELAY=-1
> rtmch2db6.url = jdbc:h2:mem:rtmch2db6;MVCC=TRUE;DB_CLOSE_DELAY=-1
>
>
> I am using spring with h2. Here is the datasource configuration.
>
>     <bean id="h2DataSource1"
>  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>         <property name="driverClassName" value="${
> rtmch2db.driver.class.name}" />
>         <property name="url" value="${rtmch2db1.url}" />
>         <property name="username" value="${rtmch2db.username}"/>
>         <property name="password" value=""/>
>     </bean>
>
>     <bean id="h2DataSource2"
>  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>         <property name="driverClassName" value="${
> rtmch2db.driver.class.name}" />
>         <property name="url" value="${rtmch2db2.url}" />
>         <property name="username" value="${rtmch2db.username}"/>
>         <property name="password" value=""/>
>     </bean>
>
>     <bean id="h2DataSource3"
>  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>         <property name="driverClassName" value="${
> rtmch2db.driver.class.name}" />
>         <property name="url" value="${rtmch2db3.url}" />
>         <property name="username" value="${rtmch2db.username}"/>
>         <property name="password" value=""/>
>     </bean>
>
>     <bean id="h2DataSource4"
>  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>         <property name="driverClassName" value="${
> rtmch2db.driver.class.name}" />
>         <property name="url" value="${rtmch2db4.url}" />
>         <property name="username" value="${rtmch2db.username}"/>
>         <property name="password" value=""/>
>     </bean>
>
>     <bean id="h2DataSource5"
>  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>         <property name="driverClassName" value="${
> rtmch2db.driver.class.name}" />
>         <property name="url" value="${rtmch2db5.url}" />
>         <property name="username" value="${rtmch2db.username}"/>
>         <property name="password" value=""/>
>     </bean>
>
>     <bean id="h2DataSource6"
>  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>         <property name="driverClassName" value="${
> rtmch2db.driver.class.name}" />
>         <property name="url" value="${rtmch2db6.url}" />
>         <property name="username" value="${rtmch2db.username}"/>
>         <property name="password" value=""/>
>     </bean>
>
>
>     <jdbc:initialize-database data-source="h2DataSource1">
>    <jdbc:script location="classpath:current-values-schema.sql"/>
>  </jdbc:initialize-database>
>
>     <jdbc:initialize-database data-source="h2DataSource2">
>    <jdbc:script location="classpath:current-queue-depth-schema.sql"/>
>  </jdbc:initialize-database>
>
>     <jdbc:initialize-database data-source="h2DataSource3">
>    <jdbc:script location="classpath:current-agent-site-team-schema.sql"/>
>   </jdbc:initialize-database>
>
>     <jdbc:initialize-database data-source="h2DataSource4">
>    <jdbc:script location="classpath:current-agent-values-schema.sql"/>
>   </jdbc:initialize-database>
>
>   <jdbc:initialize-database data-source="h2DataSource5">
>    <jdbc:script location="classpath:current-call-skills-schema.sql"/>
>   </jdbc:initialize-database>
>
>   <jdbc:initialize-database data-source="h2DataSource6">
>    <jdbc:script location="classpath:current-agent-skills-schema.sql"/>
>   </jdbc:initialize-database>
>
>
> when i dig into thread dump current running thread (query execution) sync
> on
>
> public ResultInterface executeQuery(int maxrows, boolean scrollable) {
>
>         startTime = 0;
>
>         Database database = session.getDatabase();
>
>         Object sync = database.isMultiThreaded() ? (Object) session :
> (Object) database;
>
>         session.waitIfExclusiveModeEnabled();
>
> *        synchronized (sync) {*
>
> *            try {*
>
> *                database.checkPowerOff();*
>
> *                session.setCurrentCommand(this);*
>
> *                return query(maxrows);*
>
> *            } catch (DbException e) {*
>
> *                e.addSQL(sql);*
>
> *                database.exceptionThrown(e.getSQLException(), sql);*
>
> *                throw e;*
>
> *            } finally {*
>
> *                stop();*
>
> *            }*
>
> *        }*
>     }
>
> H2 should do syncronization on database right? Can you please let me know
> where I am doing wrong?
>
> Thanks,
> Suresh
>
> On Sun, Apr 10, 2011 at 2:29 AM, Thomas Mueller <
> [email protected]> wrote:
>
>> Hi,
>>
>> >           Can I create separate data base for each table? The tables are
>> not
>> > related to each other.
>> > Can this help?
>>
>> Yes, I believe this would help.
>>
>> Regards,
>> Thomas
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "H2 Database" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/h2-database?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to