또슈처리

2024년 8월 1일 목요일

Today I Learned

날짜

2024년 8월 1일 목요일

내용

또슈처리

오늘도 이슈가 발생했다. 어떤 샵에서 CSV 파일로 4천개 정도의 리뷰를 가져왔는데, 그 샵의 위젯에 나타나지 않는다. 아예 안나타나는 것도 아니고 딱 96개만 나타난다. 해당 스토어의 어드민 페이지로 접근해보니 문제가 된 리뷰들은 고유 넘버도 없다. 리뷰 임포트 부분은 히스토리를 잘 몰라서 당황하긴 했는데… 일단 원인부터 들여다 봤다.

난 당연히 리뷰 테이블에서 갯수를 센 결과가 위젯에 표시될거라고 생각했는데 아니었다. ProductJudge 라는 테이블의 필드를 조회한다. 이 테이블은 그룹 리뷰를 위한 거라고 써있는데… 왜 뜬금없이 애를 참조하는 건가? 그룹 리뷰라 하면 다른 상품의 리뷰까지 포함해서 보여주는 기능이다. 그럼 그룹 리뷰로 설정되지 않으면 그냥 자신의 리뷰만 보여주면 되는거 아닌가? 싶었는데 그런 코드는 없다. 흠…

문제가 된 상품이 96개가 표시된 것도 그 상품의 product_judge의 값이 96이라서 그렇다. 이 상품은 그룹리뷰로 포함되지 않은 상품인데 왜 product_judge에 값이 들어가있는가? 그렇다면 그룹리뷰로 포함되지 않아도 이 데이터는 업데이트 된다는 의미다. 그 업데이트 되는 시점은 언제인가? 찾아보니 리뷰가 생성될 때다.

CSV 파일에서 리뷰를 가져올때 반복문을 돌면서,

  1. 리뷰 데이터를 설정하고
  2. 이걸 product_judge에 반영하고
  3. reivew_number를 부여한다.

순서로 로직을 탄다. 그렇다면 이 스토어가 4천개의 리뷰를 가져오던 중 97번째 리뷰를 처리할 때 부터 2번에서 문제가 발생했던건 아닐까? 그러면서 3번이 실행되지 않아 리뷰 넘버가 부여되지 않은채 저장되었다면..? 증명할 길은 없다.

리뷰 관리 페이지에 가보니 4천개가 모두 나타나고 있다. 혹시 publish가 안되서 안보이는 건 아닌가 싶어 필터링 걸어서 들여다보니 96개만 publish 되있었다. 옳다구나 싶어 unpublish 된 걸 검색해보니 0개. ?

puiblish 상태는 O,X 가 아니라 대기 상태도 존재했다. 스토어의 정책에 따라 일정 시간 후 퍼블리시 상태로 변경되도록 하는 기능이다. 그렇다면 언제 퍼블리시로 바꿀지도 데이터가 있어야 하는데 반영되지 않았다. 그럼 1번만 진행되고 저장되는 과정에서, 퍼블리시 대기 상태로 설정되었으나 변경 시점이 설정되지 않아 무한 대기상태였었나 보다. 왜인지는 몰?루

커맨드에 product_judge를 업데이트 하는 커맨드가 있어서 돌려주었다. 불완전 데이터들(퍼블리시 상태, 리뷰 넘버)도 잘 부여해서 스토어에 잘 나타나게 해줬다.

회고

뭐했다고 8월인가.