본문 바로가기

일상6

롤백에러 - HeuristicCompletionException, UnexpectedRollbackException Transaction silently rolled back because it has been marked as rollback-only 해당 에러로그가 남겨져있어서 원인을 파악해보았다..! UnexpectedRollbackException Transaction silently rolled back because it has been marked as rollback-only 트랜잭션에서 트랜잭션 열었을 때, default는 PROPAGATION_REQUIRED로 되기때문에 상위 트랜잭션에 합류된다. 만약 하위 트랜잭션에서 롤백이 터지면, 상위에서 try, catch를 쓰더라도 롤백이 되게 된다. @Transactional public void transactionMethod1(){ try{ trasactionalService.transacationalMethod2(); } catch(Exception ignored) { } } @Tras.. 2023. 11. 8.
스프링 필터 ignoring 미적용 사례 필터 빈으로 등록하면, 어플리케이션 필터체인 탐! 시큐리티 필터체인 안타서 ignore 안걸림! 결론 : 빈으로 등록하지 말자! ( 시큐리티 필터 탈 수 있게 처리) Spring Boot 에서 @Component로 추가한 filter가 WebSecurity의 ignoring에 의해 무시되지 않는 이유 :: 기억저장소 (tistory.com) 2023. 11. 3.
API 동시 요청으로 인한 NPE 이슈 (개발 환경 간 다른 결과 발생) 상황 이번에 개발한 API 중 순차적으로 실행 되어야하는 API가 있다. (응시 데이터 저장 -> 분석 요청 -> 결과 조회 ) 로그를 확인해보니, 일부 개발 환경에서 분석 요청 API에서 NPE(Null Point Exception)가 터지고 있었다.. 해당 데이터는 응시 데이터를 바탕으로 불러온다. 원인 여러가지의 경우의 수를 생각해봤지만, 다 아니였구.. 프론트에서 응시데이터 저장 API와 분석요청 API 를 동시에 요청해서 생긴 일이였다... 로컬에서 테스트했을 땐, 발생하지 않고 클라우드환경의 개발환경에서만 발생했는데 프론트 상의 처리속도에 의한 문제였던 것이였다. 1) 로컬환경 동시 실행 형태로 코드가 짜여있지만, 응시 데이터 저장 API가 백단에서 다 저장된 이후 분석요청 API가 들어가짐... 2023. 9. 1.
Repeatable read 의 Phantom read와 Consistent read의 문제점 상황 더보기 타 셀 동기로부터 @Async 사용하는 메소드의 비동기 처리가 끝나길 기다렸다가 응답 받는 방법이 있냐는 질문을 받았다. 그래서 CompletableFuture로 return받으라고 전달했는데, 해당 내용으로 해결되진 않는다고 했다. 상황을 파악해보니, 동기가 처한 상황은 부모 스레드에서 트랜잭션을 연 후, @Async를 통해 돌게 된 자식 스레드의 메서드 내에서 @Transactional(propagation = Propagation.REQUIRES_NEW) 을 통해 트랜잭션을 열어서 데이터를 저장 후 커밋하였고, 부모 스레드에서 db 조회 시에 조회가 되지 않는단 이슈였다..! 즉, 트랜잭션을 열고 다른 트랜잭션에서 데이터를 인서트한 커밋내용이 기존에 열어둔 트랜잭션에서 조회 시 보여야하.. 2023. 8. 8.
Teams Hook API를 통한 팀즈 알림 처리 - Spring 수정사항 2023-08-14 : 주의사항에 대한 내용 추가 사용 계기 다양한 사용 사례가 있지만, 통틀어서하면 코드 상 작업 중 확인하고 싶은 게 있을 시 보다 편하게 확인하기 위해 팀즈로 알림이 오게 하였다. (에러 발생, VOC, 배포 완료 등등) 주의사항 팀즈 훅은 api 요청 속도 제한이랑 요청 크기 제한이 있다..! 해당 사항을 넘지 않도록 잘 분리해서 요청 보내도록 처리하자 (라고 생각했지만, 우리의 경우 팀즈 알림을 보조적으로 쓰는데 해당 분리 요청을 하기 위해 실제 서비스에 영향을 끼칠 수 있는 방법밖에 떠오르지 않아 일단 해당 사항을 인지하고 쓰자 정도로 논의 되었다!) 초당 제한 사용법 팀즈의 팀을 생성 후 해당 팀 안에 채널을 생성한다. 채널을 우측 클릭해보면, 커넥터라는게 존재한다... 2023. 8. 2.
io.jsonwebtoken.MalformedJwtException: JWT strings must contain exactly 2 period characters. Found: 0 오류 아침마다 에러 트래킹을 하고 있다. 오늘은 아래와 같은 에러를 발견했다. io.jsonwebtoken.MalformedJwtException: JWT strings must contain exactly 2 period characters. Found: 0 원인 해당 에러는 JWT 토큰을 파싱하는 과정에서 발생하는 에러였따..! 해당 부분의 Jwts.parser()에 들아가보면 default jwt parser를 부르고, jwt 의 형식에 맞지 않게 들어와서 발생하는 문제였다.. 현재 에러는 .. 이 양식에서 . 게 없어서 발생하는 문제다! (jwt 형식에 맞는 토큰을 담지 않았다..!) 위의 로직에서, jwt의 문자열을 비교하면서 구분점을 찾는데 발견되지 않은 것이다., 해결 현재 우리는 core쪽.. 2023. 7. 26.