2
Transactional 주석으로 정의 된 두 개의 함수 A와 B가 있습니다.전파 .REQUIRES_NEW로 인해 LockWaitTimeOutException이 발생합니다.
는 내가 해결있어 함수 B와 문제에서 Propagation.REQUIRES_NEW을 제거
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
에 A.
@Transactional(value=Constants.READ_WRITE_REQUEST)
public int A(....){
B();
}
@Transactional(propagation=Propagation.REQUIRES_NEW,value=Constants.READ_WRITE_REQUEST)
public int B(....){
C();
}
@Transactional(value=Constants.READ_WRITE_REQUEST)
public int C(....){
...
}
그것은 결과되었다에서 B를 호출하고 있습니다.
이전 트랜잭션이 잠금을 유지하고 새 트랜잭션이 생성 되었기 때문에 그렇습니까? 이것에 대한 의견이 있으십니까?