数据库终止在启动起来会卡在sql执行上
名称: RecoveryFileThread4
状态: RUNNABLE
总阻止数: 2, 总等待数: 10
堆栈跟踪:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
java.net.SocketInputStream.read(SocketInputStream.java:170)
java.net.SocketInputStream.read(SocketInputStream.java:141)
com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100)
com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143)
com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173)
- 已锁定 com.mysql.jdbc.util.ReadAheadInputStream@1e43713
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2911)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3332)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3322)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3762)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2535)
- 已锁定 com.mysql.jdbc.JDBC4Connection@6243c0
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1911)
- 已锁定 com.mysql.jdbc.JDBC4Connection@6243c0
com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1203)
- 已锁定 com.mysql.jdbc.JDBC4Connection@6243c0
org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198)
org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:62)
com.sun.proxy.$Proxy159.execute(Unknown Source)
org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:59)
org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73)
org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:60)
org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77)
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)
sun.reflect.GeneratedMethodAccessor317.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
com.sun.proxy.$Proxy17.selectOne(Unknown Source)
org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:163)
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:68)
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
com.sun.proxy.$Proxy132.findExistByItem(Unknown Source)
com.sf.wopint.kafka.biz.impl.WmsActAllocationDetailsBiz.saveData(WmsActAllocationDetailsBiz.java:113)
com.sf.wopint.kafka.biz.impl.WmsActAllocationDetailsBiz.saveMessageToDB(WmsActAllocationDetailsBiz.java:183)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:201)
com.sun.proxy.$Proxy133.saveMessageToDB(Unknown Source)
com.sf.wopint.kafka.listener.RecoveryFileListener.recoveryFileBiz(RecoveryFileListener.java:133)
com.sf.wopint.kafka.listener.RecoveryFileListener.access$1(RecoveryFileListener.java:118)
com.sf.wopint.kafka.listener.RecoveryFileListener$RecoveryFileRunnable.run(RecoveryFileListener.java:104)
java.lang.Thread.run(Thread.java:745)
解决方法,配置mybatis最大执行时间
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="defaultStatementTimeout" value="60" />
</settings>
</configuration>
<!-- MyBatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
<property name="typeAliasesPackage" value="com.sf.wop.common.domain" />
<property name="configLocation" value="classpath:/META-INF/config/wop.common/mybatis/mybatis-config.xml"></property>
<!-- 显式指定Mapper文件位置 -->
<property name="mapperLocations" value="classpath:/META-INF/config/wop.common/mybatis/*Mapper.xml" />
<!-- 多个目录配置文件使用方式 -->
<!--
<property name="mapperLocations">
<list>
<value>classpath:/META-INF/config/wop.common/mybatis/*Mapper.xml</value>
<value>classpath:/META-INF/config/wopint.kafka/mybatis/*Mapper.xml</value>
</list>
</property>
-->
</bean>