o.h.engine.jdbc.spi.SqlExceptionHelper : Lock wait timeout exceeded; try restarting transaction
org.springframework.transaction.**IllegalTransactionStateException**: Transaction is already completed - do not call commit or rollback more than once per transaction
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:804) ~[spring-tx-5.3.29.jar:5.3.29]
at sopt.org.umbba.api.service.scheduler.ScheduleService.lambda$schedulePushAlarm$1(ScheduleService.java:108) ~[main/:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.29.jar:5.3.29]
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:95) ~[spring-context-5.3.29.jar:5.3.29]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
SqlExceptionHelper
데이터베이스에서 트랜잭션을 수행하는 동안, 다른 트랜잭션으로부터 요청된 락이 해제되지 않아 발생한 문제 ⇒ 락 충돌 발생 !
IllegalTransactionStateException
⇒ [분석 결과] 트랜잭션 처리가 중복 호출되고 있다. 수동으로 관리해줘야 하는 부분과 자동으로 관리되는 부분의 경계를 찾아 제대로 트랜잭션 처리가 이루어지도록 해야 하고, 이를 위해서 로직과 경계를 수정해주자!