Today I Learned
날짜
2024년 10월 25일 금요일
내용
천 번의 오류
우리 슬랙의 무료 평가판 기간이 끝나면서, 마지막에 추가한 sentry 알람이 사라졌다.. 이제 에러가 나는지 직접 들어가서 확인해봐야 한다. 요즘 설치 수가 많아지면서 그래도 잘 작동하는 줄 알았는데.. 똑같은 오류가 천 번 이상 지속적으로 나고 있었다. 오류 메시지는 쇼피파이 상품 미디어의 ID가 이미 존재하는 값이라, DB가 롤백된다는 내용이다. 모두 쇼피파이 설치 로직에서 발생했다.
쇼피파이 상품 미디어의 ID는, 쇼피파이에서 제공하는 값이다. 쇼피파이에서 globally unique id라 했으니까 분명 중복이 된 값이 들어올리는 없고.. 이미 저장된 상품을 또 저장해서 발생한 문제인지 알아봤는데, 이 에러가 터진 샵들 중 첫 설치인 샵들이 많았다.
쇼피파이 상품, 상품 옵션, 상품 미디어가 같이 데이터베이스에 커밋되도록 해놔서 미디어 저장 중 문제가 발생하면 상품까지 다 저장이 안되었어야 했는데, 문제가 터진 샵들의 데이터를 보니 상품이 안들어오진 않았다. 일부가 누락된 경우도 있고, 잘들어온 경우 도 있었다. 결국 똑같은 로직에서 발생한 똑같은 오류인데, 발생한 샵들간의 공통점도 없고 피해도 제각각이었다.
우선 누락된 상품 데이터가 있는지 확인해보았는데, 전체 25800개 중 약 300개 정도가 누락되어 있었다. 그리고 설치과정에서 상품데이터를 가져온 후, 마지막에 웹훅을 추가하는데 상품 추가과정에서 오류가 나서 웹훅이 생성이 안됐다! 100여 개의 샵들의 웹훅을 모두 조회하고 안만들어진 샵들은 추가해줬다.
일단 급한 불은 끄긴 했는데 아직 원인도 모르겠다.
- 전혀 다른 두 데이터가 동일한 ID를 가질 일은 없다. 쇼피파이에 업로드하여 저장한 이미지도 다른 상품에 똑같이 배정하면 다른 ID를 가진다.
- 따라서 이 문제는 똑같은 데이터가 2번 저장되서 발생한 문제다.
- 코드가 2번있지도 않고, 삭제한 샵의 데이터가 존재하는 채로 재설치 된 것도 아니다.
도대체 뭘까. 일단 증상은 다 없앴는데.. 원인을 모른다!
회고
근데 잘되긴 함