테스트 코드를 작성하다 보면 “어제는 성공했는데 오늘은 실패한다?” 수정한 게 하나도 없는데 이런 일이 벌어질 때가 있습니다. 이번 글에서는 제가 실제로 겪은 LocalDateTime.now() 때문에 테스트가 간헐적으로 실패한 경험과 이를 해결한 방법을 정리해 보았습니다.이슈 발생제가 회사에서 맡고있는 소개팅 앱의 기능에는 이성의 카드를 받고 좋아요 또는 호감 메시지 보내기 기능이 있습니다. 이런 기능을 액션을 했다고 표현하는데 액션을 하게 되면 카드의 D-DAY를 갱신해주게 됩니다. D-DAY 갱신 방식으로는 기존 D-DAY가 7인 카드는 액션 시 D-7로 갱신하고, D-DAY가 1~6인 카드는 D-6으로 갱신해줍니다. 갱신 시에는 카드 데이터의 생성시간을 직접 수정D-DAY는 별도의 컬럼으로 관리..
Trouble Shooting
개요 로컬에서 개발할 때 h2 In-Memory DB를 사용하던 중, h2.console.enabled 설정을 true로 하고 애플리케이션을 기동시켰는데 애플리케이션 기동이 안되고 오류가 발생했다. 📍 오류 내용 This is because there is more than one mappable servlet in your servlet context: {org.h2.server.web.JakartaWebServlet=[/h2-console/*], org.springframework.web.servlet.DispatcherServlet=[/]}. This method cannot decide whether these patterns are Spring MVC patterns or not. If this..
슬로우 쿼리 발생 내가 운영하던 그룹웨어 게시판 서비스에는 '최근 게시글'이라는 특수한 게시판이 존재했다. 보통 게시글은 사용자가 등록한 게시판에 접근해서 조회하지만, 해당 게시판은 모든 게시판의 게시글을 등록 순으로 보여주는 게시판이었다. 내가 막 게시판 서비스를 맡게 되었을 때 전임자 분께서 "해당 API가 속도가 안나오니 언젠간 튜닝을 해야 할거에요"라는 말을 하셨는데, 그 때 속도 체크 해봤을 때는 2~3초 나와서 아직 튜닝할 때는 아니라고 판단하고 냅두고 있었다. 그런데 어느날 인프라 팀에서 특정 고객사에서 해당 게시판의 게시글 리스트를 조회할 때 속도가 너무 오래걸린다는 안내를 받았고, 해당 고객사에 들어가서 확인해보니 API 속도가 약 7초 가량 소요되고 있었다. 속도 저하의 원인이 되었던 ..
개요 회사 업무를 진행하던 중 특정 쿼리를 수행할 때 마다 아래와 같은 Collations 관련 오류가 연달아 3번이나 발생했다. Illegal mix of collations (~~) and (~~) for operation '=’ Collation이란 ?? 문자열을 비교, 정렬하기 위해서 정의된 규칙들의 집합이다 (Character Set은 글자 자체의 인코딩에 대한 정의) 이 Collation 오류에 대한 히스토리와 해결 방법을 공유하고자 한다. 첫번째 오류 가장 처음 발생한 Collation 오류 메시지는 다음과 같다 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operati..
오류 내용 Mybatis에서 #{} 문법으로 파라미터 바인딩 된 곳에 주석 처리를 하면 아래와 같이 오류가 발생한다. java.sql.SQLSyntaxErrorException: (conn=554682) Could not set parameter at position 원인 및 해결방안 mybatis에서는 #{ } 이 있는 곳을 -- 주석이나 또는 /* */ 주석으로 감싸면, 주석 내에 있는 코드여도 파라미터를 지정하는 대상으로 판단한다. 그래서 #{} 코드를 주석처리하려면 을 사용해야한다. : 사용 가능 /* #{} */ : 오류 -- #{} : 오류
이슈 내용 그룹웨어 게시판 운영 중 있었던 이슈사항을 기록하고자 한다. 내가 맡은 그룹웨어 게시판 기능 중에는 [게시글 프린트] 기능이 있는데, 해당 버튼을 클릭하면 현재 게시글의 게시글을 팝업 형태로 요약해주고 프린트 기능을 제공한다. 그런데 고객사 중 이전 버전의 그룹웨어를 사용하다가 업그레이드 진행한 이력이 있는 고객사가 있는데 해당 고객사에서 [게시글 프린트] 버튼을 클릭하면, 이전버전 그룹웨어 도메인으로 팝업이 호출된다는 오류 사항을 전달 받았다. 원인 및 해결 게시글 조회 API 호출 전에는 헤더 부분의 요청 URL이 정상적으로 현재 그룹웨어 도메인으로 들어가 있었지만, 호출 뒤에 다시 확인해보니 해당 URL이 과거 그룹웨어 도메인으로 변경되었다. 원인을 파악해 보니 게시글 조회 API 리턴값..