입점사에서 취소가 마켓 처리 실패로 뜨고 안내받은 자동 취소도 안 된다는 문의가 들어왔다. 요컨대 취소가 전혀 진행되지 않고 있다는 얘기였다.
Table of contents
Open Table of contents
이미 종결된 주문
문의한 건들을 조회하니 주문과 항목 상태가 전부 취소 완료로 찍혀 있었다. 취소가 안 된 것이 아니라 이미 정상으로 끝난 상태였다.
그러면 왜 화면에는 대기로 뜨는지를 이어서 봐야 했다. 취소 테이블을 상태별로 세니 요청 상태로 292건이 그대로 남아 있었다.
전환되지 않은 컬럼
주문은 끝났는데 취소 테이블의 상태 컬럼만 전환되지 않고 남은 것이었다. 화면은 그 컬럼을 보고 취소 대기라고 표시하고 있었다.
즉 연동 실패가 아니라 표시 문제였다. 입점사 입장에서는 둘이 구분되지 않으므로 화면에 대기라고 뜨면 안 된 줄 알게 된다.
바뀐 확인 순서
이 유형의 문의를 받으면 마켓 연동 실패를 먼저 의심하고 로그를 뒤지는 대신 주문 상태와 취소 상태의 불일치부터 확인하기로 했다. 불일치면 표시 문제이고 일치하면 진짜 실패다.
이 확인을 먼저 하면 조사 자체가 훨씬 짧게 끝난다. 해소는 잔존 건을 정리하는 것과 왜 전환이 안 됐는지 코드를 보는 두 갈래인데 앞의 것만 하면 또 쌓인다. 다만 전환 미동작의 코드상 원인은 이 시점까지 못 찾았고 미확인으로 적었다.
드러난 요청 폭주
조사 중에 성격이 다른 것이 하나 나왔다. 한 주문에 취소 요청이 233건 있었고 엿새 동안 20분 간격으로 반복 생성돼 있었다.
무언가가 취소 요청이 없다고 판단해 계속 만든 것으로 보이고 마지막에 하나가 성공했는데 앞선 것들이 정리되지 않고 남았다. 표시 문제는 상태가 안 바뀐 것이고 폭주는 같은 요청을 계속 만든 것이라 성격이 다르므로 따로 조사 대상으로 분리했다.
조인 대상을 바꾼 조회
조회 요령도 하나 얻었는데 처음에는 상위 테이블의 공급사 식별자로 걸렀더니 일부가 안 잡혔다.
상위 테이블에 그 식별자가 비어 있는 건이 있어서 하위 항목 테이블로 조인해야 전체가 잡혔다. 같은 식별자가 여러 테이블에 있으면 어디가 채워져 있는지를 확인하고 조인 대상을 고른다.
정리
- 호소된 실패가 표시 문제일 수 있다
- 확인은 주문 상태와 취소 상태의 불일치부터 한다
- 연동 로그를 뒤지는 것은 그다음이다
- 불일치면 표시 문제이고 일치하면 진짜 실패다
- 해소는 잔존 정리와 전환 로직 확인 두 갈래다
- 원인을 못 찾았으면 미확인으로 적는다
- 같은 요청이 반복 생성되는 폭주는 따로 조사한다
- 같은 식별자가 여러 테이블에 있으면 어디가 채워져 있는지 확인한다