A consistent transaction will cause my Sql statements to fail. I am trying to use [this] dellroad-stuff 1 . But it seems to be ignored. I work with spring 3 and sleeping 4.
Error:
15:32:11,331 WARN SqlExceptionHelper:145 - SQL Error: 1213, SQLState: 40001 15:32:11,331 ERROR SqlExceptionHelper:147 - Deadlock found when trying to get lock; try restarting transaction 15:32:11,334 INFO AbstractBatchImpl:195 - HHH000010: On release of batch it still contained JDBC statements
Annotated function for re-transaction if failed:
@Override @RetryTransaction @Transactional public void save(AnalyseResult analyseResult) { final int attempt = RetryTransactionAspect.aspectOf().getAttemptNumber(); System.out.println("#############"); System.out.println("Retry Transact : "+attempt); System.out.println("#############"); analyseResultDao.save(analyseResult); }
Beans.xml
<aop:aspectj-autoproxy proxy-target-class="true" /> <bean id="hibernateExceptionTranslator" class="org.springframework.orm.hibernate4.HibernateExceptionTranslator"/> <bean class="org.dellroad.stuff.spring.RetryTransactionAspect" factory-method="aspectOf"> <property name="persistenceExceptionTranslator" ref="hibernateExceptionTranslator"></property> <property name="maxRetriesDefault" value="4"></property> <property name="initialDelayDefault" value="25"></property> <property name="maximumDelayDefault" value="5000"></property> </bean>
source share