빌드 시에 테스트 무한로딩
1. 현재 학습 진도
몇 챕터/몇 강을 수강 중이신가요?
2-4. 프로젝트 설정하기 14:09에 강의 런칭 시점에는 테스트 모두 통과하도록 변경했습니다. 라고 적혀있는데 테스트에서 무한로딩이 걸리길래
./gradlew build --info로 띄워 봤습니다.
그래서 보니깐

이 로직이 계속 반복되더라구요 그래서 찾아보니

여기 while문에 계속 걸리는 거 같은데
제가 잘못 세팅한 건가요?
강의 앞전에 bootRun해서 http://localhost:8080/api/chapter2/boards
까지 접속되는 거 확인했고 도커에서 backend-pass-portfolio 컨테이너에 Db-mysql 만 실행된 채로 build눌렀습니다.
답변 2
0
안녕하세요 kongminoo 님 질문 주셔서 감사합니다!
혹시 재시도라고 검색하시면 문구가 몇개 뜨시는지 볼 수 있을까요?
저의 경우에는 729개가 출력이 되고, 시도횟수 28 이후에 성공하는 것으로 파악되었습니다!
현재 세팅은 정상적으로 되신 것 같아요!
혹시 컴퓨터 사양에 따라 무한 시도가 되는 것인지 파악이 필요할 것 같습니다
질문 주셔서 감사합니다 ㅎ.ㅎ 덕분에 문제 있을 수 있는 부분을 찾았습니다

0
안녕하세요, 인프런 AI 인턴입니다. kongminoo님.
현재 겪고 계신 문제는 joinEvent 메서드 내의 무한 루프와 관련되어 있으며, 이는 주로 데이터베이스의 동시성 제어 문제로 보입니다. eventWithLockService.joinEventOptimistic 메서드가 동시 업데이트를 시도하는 과정에서 충돌이 발생하고, 예외가 발생함에 따라 루프가 반복되고 있는 상황으로 판단됩니다.
무한 루프 원인 분석:
낙관적 락(E) 예외 발생:
OptimisticLockingFailureException이나 유사한 예외가 발생하면 현재 트랜잭션에서 다른 트랜잭션이 먼저 데이터를 수정했음을 의미합니다. 이때, 예외를 잡아 계속해서 재시도하게 됩니다.
재시도 로직 확인 필요:
- while (true) 루프에서 예외가 발생할 경우 재시도 로직에 의해 계속해서 무한 루프에 빠지게 됩니다. 트랜잭션 격리 수준이나 재시도 횟수 설정이 있는지 확인해보세요.
- while (true) 루프에서 예외가 발생할 경우 재시도 로직에 의해 계속해서 무한 루프에 빠지게 됩니다. 트랜잭션 격리 수준이나 재시도 횟수 설정이 있는지 확인해보세요.
문제 해결 방안:
로깅 및 디버깅:
- 로그에서 반복적인 예외가 발생하고 있는 이유를 살펴보고, 예외 처리 로직을 어떻게 개선할 수 있을지 확인합니다. 충분한 시간을 두고 문제를 재현하며 세부 로그를 확인해보세요.
- 로그에서 반복적인 예외가 발생하고 있는 이유를 살펴보고, 예외 처리 로직을 어떻게 개선할 수 있을지 확인합니다. 충분한 시간을 두고 문제를 재현하며 세부 로그를 확인해보세요.
락 설정 및 재시도 제한:
- 재시도 횟수에 제한을 두고, 특정 횟수 이상 실패 시 오류 처리를 하도록 수정하는 것도 고려해보세요. 예를 들어 최대 3회까지만 재시도하도록 설정하고, 이후에는 에러로 반환합니다.
- 재시도 횟수에 제한을 두고, 특정 횟수 이상 실패 시 오류 처리를 하도록 수정하는 것도 고려해보세요. 예를 들어 최대 3회까지만 재시도하도록 설정하고, 이후에는 에러로 반환합니다.
동시성 문제 해결:
- 데이터베이스 테이블의 인덱싱이나 락 설정을 조정하여 낙관적 락 충돌을 줄입니다.
- 데이터베이스 테이블의 인덱싱이나 락 설정을 조정하여 낙관적 락 충돌을 줄입니다.
참고 링크:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
40
2
Build 관련 문제 (테스트 관련 문제)
0
44
2
인덱스 관련 질문 있습니다.
0
72
2
비관적 락 구현 방식 문의 건
0
78
2
외부 api 처리 방안에 대하여 궁금한 점이 있습니다.
0
91
2
네임드 락 사용 시 커넥션 풀을 분리하는 방법에 대한 질문
0
85
2
이벤트) 백엔드 기술면접 실전문제집
0
105
2
로컬에서 테스트 한 결과를 이력서에 써도 괜찮을까요?
0
132
2
데드락 발생 시, 외래 키를 제거하는 방법 관련 질문
0
88
2
Redis 캐싱을 도입하는데 db조회와 성능이 차이가 거의 없습니다.
0
113
2
k6 부하테스트 중인데 개선 전 성능이 너무 안나와서 고민
0
135
2
강의와 성능수치 비교
0
105
2
13강 강의 뒷부분의 과제 안내부분은 어디있나요?
0
51
2
이벤트 참가자 수 증가 후, save 메서드 호출 코드 질문
0
66
2
[수업 자료 질문] Cache Aside의 특징 문의
0
88
2
[수업자료 문의] RedisTemplate으로 SETNX 시 리턴값 문의
0
81
2
블로그에 학습 내용 정리 포스트를 올려도괜찮나요?
0
112
2
멀티스레드 상황인데 currentParticipants 가 AtomicInteger가 아닌 이유?
0
90
3
클라우드 환경 배포시 부하 테스트 방식에 대하여
0
150
2
k6 dashboad 안나오는 상
0
116
2
2-4 도커 빌드 에러가 계속 납니다.
0
299
2
AWS EC2에 도커 컨테이너가 동작하지 않을 때 확인 해야하는 것
0
116
2
성능 측정시
0
113
2
API 별 실행 쿼리 모니터링 구현 질문 있습니다.
0
87
2





