Hello: So, I have things up and running under Java and iBATIS, but running into some starvation issue, and my server is locking up. When I dump threads, I see a bunch that are waiting for the connnection pool (see output #1 below) and as well, a bunch that are waiting on Throttle.increment (see output #2).
Has anyone see anything similar? I am stumped right now - looking for ANY hints to help me track down (and fix :) what is going on - I don't know databases all that well, so help appreciated greatly. First up, I'm going to upgrade to latest version of iBATIS, but thinking I might have something wrong in my thread pool setup. The pool setup: <bean id="mapConfig" class="org.springframework.core.io.ClassPathResource"> <constructor-arg> <value>com/ecobee/foundation/dao/ibatis/SqlMapConfig.xml</value> </constructor-arg> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql:///ecobee" /> <property name="username" value="XXX" /> <property name="password" value="XXX" /> <property name="initialSize" value="10" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="10" /> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" ref="mapConfig" /> </bean> I currently have no <settings> element in my SqlMapConfig.xml file, so running with those defaults. Any help is greatly appreciated - I am mystified. I am using iBATIS 2.3.0.667 and commons dbcp 1.2.2, and running MySQL 5.0.32. Off to upgrade to latest iBATIS as a start - Cheers, parki... --- x8 snip Output #1: Thread: Thread[pool-1-thread-121,5,main]= -- java.lang.Object.wait(Native Method) -- java.lang.Object.wait(Object.java:474) -- org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjec tPool.java:810) -- org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSourc e.java:96) -- org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.ja va:880) -- org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin (DataSourceTransactionManager.java:200) -- org.springframework.transaction.support.AbstractPlatformTransactionManag er.getTransaction(AbstractPlatformTransactionManager.java:377) -- org.springframework.transaction.interceptor.TransactionAspectSupport.cre ateTransactionIfNecessary(TransactionAspectSupport.java:261) -- org.springframework.transaction.interceptor.TransactionInterceptor.invok e(TransactionInterceptor.java:101) -- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref lectiveMethodInvocation.java:171) -- org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(E xposeInvocationInterceptor.java:89) -- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref lectiveMethodInvocation.java:171) -- org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAo pProxy.java:204) -- $Proxy2.saveLogSet(Unknown Source) -- com.ecobee.communicator.rest.restlet.LogRestlet.doPost(LogRestlet.java:7 6) -- com.ecobee.communicator.rest.RestletManager.handleRequest(RestletManager .java:195) -- com.ecobee.communicator.engine.EngineRequest.handleRequest(EngineRequest .java:112) -- sun.reflect.GeneratedMethodAccessor338.invoke(Unknown Source) -- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) -- java.lang.reflect.Method.invoke(Method.java:585) -- com.whatevernot.engine.standard.StateRunnable.run(StateRunnable.java:56) -- java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto r.java:650) -- java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja va:675) -- java.lang.Thread.run(Thread.java:595) Output #2: Thread: Thread[pool-1-thread-613,5,main]= -- java.lang.Object.wait(Native Method) -- java.lang.Object.wait(Object.java:474) -- com.ibatis.common.util.Throttle.increment(Throttle.java:70) -- com.ibatis.common.util.ThrottledPool.pop(ThrottledPool.java:57) -- com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.popSession(SqlMapEx ecutorDelegate.java:933) -- com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.<init>(SqlMapSessionImpl .java:51) -- com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.getLocalSqlMapSession(Sql MapClientImpl.java:259) -- com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.startBatch(SqlMapClientIm pl.java:161) -- com.ecobee.foundation.dao.ibatis.LogDao.saveLogSet(LogDao.java:22) -- sun.reflect.GeneratedMethodAccessor341.invoke(Unknown Source) -- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) -- java.lang.reflect.Method.invoke(Method.java:585) -- org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection( AopUtils.java:301) -- org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinp oint(ReflectiveMethodInvocation.java:182) -- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref lectiveMethodInvocation.java:149) -- org.springframework.transaction.interceptor.TransactionInterceptor.invok e(TransactionInterceptor.java:106) -- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref lectiveMethodInvocation.java:171) -- org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(E xposeInvocationInterceptor.java:89) -- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref lectiveMethodInvocation.java:171) -- org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAo pProxy.java:204) -- $Proxy2.saveLogSet(Unknown Source) -- com.ecobee.communicator.rest.restlet.LogRestlet.doPost(LogRestlet.java:7 6) -- com.ecobee.communicator.rest.RestletManager.handleRequest(RestletManager .java:195) -- com.ecobee.communicator.engine.EngineRequest.handleRequest(EngineRequest .java:112) -- sun.reflect.GeneratedMethodAccessor338.invoke(Unknown Source) -- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) -- java.lang.reflect.Method.invoke(Method.java:585) -- com.whatevernot.engine.standard.StateRunnable.run(StateRunnable.java:56) -- java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto r.java:650) -- java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja va:675) -- java.lang.Thread.run(Thread.java:595)