测试一个xxl-job,遇到问题事务问题
情景再现
使用@PostConstruct注解来测试,由于是上传素材,比较耗时,所以使用了线程池,一切很顺利的是时候,保存日志的时候报了个错:
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: HikariDataSource HikariDataSource (DatebookHikariCP) has been closed.
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:305)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:474)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
我擦,啥情况!百度了半天,也没找到问题,刚开始以为是线程池里面又开了线程导致的,多次测试发现是开了线程池的影响。具体是啥原因,别问我,问就是不知道。不过还是挺坑的,记录一下吧。