없는 응답의 반환

2024년 6월 20일 목요일

Today I Learned

날짜

2024년 6월 20일 목요일

내용

실서버 에러처리

실서버에서 이것저것 에러 알람이 또 뜨고있다. 첫번째는 웹훅으로 상품이 수정되었을 때 발생하는 것이고, 두번쨰는 이메일로 온 리뷰작성 요청을 통해 리뷰를 작성할 때 발생한다. 아예 기능이 안된다기보다는 종종 불규칙적으로 발생하는 문제였다.

리뷰 작성하는 부분은 워낙 어렵고 복잡하고 볼 게 많아 머리가 터질 것 같았다. 문득, 두 문제의 공통점을 알게 되었는데 shop을 못찾았음에도 불구하고 코드에서 감지하지 못해 진행하다가 발생한 문제라는 점이다. if not shop: 이라는 예외처리가 있는데도 건너 뛰어진다. elastic apm으로 구체적인 값을 살펴보면 분명 shop의 모든 값은 None으로 되어있다.

shop 객체가 None이 아니라, 객체는 있는데 내부의 값이 싹다 None으로 되고 있었다. 브라우즈 부스터의 경우 샵 정보를 Redis가 아닌 샵 서버에 요청을 통해 받아오는데 이때 없는데도 거르지 않고 객체에 데이터를 집어 넣다보니 발생한 문제가 아닌가? 생각이 들었다.

1
2
3
4
5
6
7
8
url = f"{get_protocol()}://{SHOP_SERVICE_URL}/browse-booster-shops/?shop_access_code={shop_access_code}"
res = requests.get(url)
res = res.json()
if res:
	shop = ShopByAccessCode(**res)
	return shop
else:
	raise HTTPException(status_code=404, detail="Not found shop")

이런 코드였다. 저 응답이 404여도 shop에 None 값이 할당되고 있는건가? 싶어서 좀 더 확실하게 코드를 바꿨다.

1
2
3
4
5
6
7
8
url = f"{get_protocol()}://{SHOP_SERVICE_URL}/browse-booster-shops/?shop_access_code={shop_access_code}"
res = requests.get(url)
res = res.json()
if res:
	shop = ShopByAccessCode(**res)
	return shop
else:
	raise HTTPException(status_code=404, detail="Not found shop")

엉뚱한 값은 안나오는듯.

페이스북 앱 검수 요청

이 랩틸리언의 추종자녀석들이 나의 앱 검수 요청을 거부했다. 사실 검수 요청떄부터 맘에 안들었는데, 앱 실행하는 화면을 녹화해서 보내줘야 했다. 근데 업로드가 안된다. 검색해보니 오래되고 유명한 버그란다. 엣지로 하면 된다길래 해봤더니 여전히 안된다. 그러다 우연찮게 사파리로 시도해보니 3번에 1번 꼴로 성공했다. 화가나서 앱 검수 경험에 대한 설문조사에 별점을 1개 줘버렸다.

어렵게 보낸 검수 요청이 실패한 이유는

  1. 테스트 해보도록 보내준 링크에선 이미 페이스북 로그인이 되어있어 로그인 창을 확인할 수 없었다는 것
  2. 특정 권한이 왜 필요한지 모르겠다는 것

이었다. 1번은 바로 로그아웃 버튼 크게 있는데 그거 눌러보던가… 권한을 싹 지우고 API를 하나씩 보낼떄마다 추가해보면서 요청 권한을 추렸다. 내일은 또 어떤 거절을 당할까?

회고

다음 스프린트에 관한 회의가 계속 되고 있다. 무섭다.