The database stops and gets stuck on sql execution when it starts up

Name: RecoveryFileThread4

Status: RUNNABLE

Total Blocks: 2, Total Waits: 10

 

stack trace: 

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)

   - Locked 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)

   - Locked com.mysql.jdbc.JDBC4Connection@6243c0

com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1911)

   - Locked com.mysql.jdbc.JDBC4Connection@6243c0

com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1203)

   - Locked 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)

 

The solution is to configure the maximum execution time of 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 configuration-->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<!-- Automatically scan entity directory, save manual configuration in 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>

<!-- Explicitly specify the Mapper file location-->

<property name="mapperLocations" value="classpath:/META-INF/config/wop.common/mybatis/*Mapper.xml" />

<!-- How to use multiple directory configuration files-->

<!--

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

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326819602&siteId=291194637