출근 73일차

·2022년 12월 7일
0

회사이야기

목록 보기
10/50

오늘은 작업한 프로덕션 배포!

오랜만에 한 8시 출근

에픽 배포할 때 마다, 9시에 실 사용이 시작되다보니 8시에 먼저 와서 이것저것 체크하는 편이였다.

그래서 오늘도 그렇게 했따

점심까지 아무런 문제가 없길래.... 오, 잘 붙었구나! 라고 생각을 했다.

그런데

으아악 슬랙 터진다!!!!

에러가 미친듯이 발생하고 있었다(...)

예외처리를 다 했다고 생각했는데, 1. 완벽하게 하지 못했고 2. 다 피해갈 경우에 반환되는게 없었다.

원래의 값이라도 반환을 해줬어야 에러가 발생을 안했는데(...)
내가 체크해놓은 예외에 포함되지 않을 경우 undefined가 반환이 됐다.

그래서 에러로 슬랙 터짐 하하

급하게 수정했는데, 또 다시 예외에 빠졌고....그래서 일단 급하게 롤백했다ㅠㅠ

고치면서 알게된 것

모든게 내 손 안에서 굴러간다고 판단한 것이 오판이였다.

에러가 발생하는 것을 확인하고, 에러로그를 보면서 어떤게 원인인지 바로 체크를 했다.

옆에서 리더님이 보시면서 이거 예외처리가 안됐을 때 반환만 해줬으면 됐다 라고 하셔서 최종적으로는 그렇게 수정했다.

결국은 신규 기능을 위한 리팩토링이였기 때문에

예외처리가 계속 진행되고, 만약 예외처리에서 OK가 안된다면
기존의 코드 작업으로 해결되도록 변경을 했다.

한개가 더 있다

그것은 바로 TypeORM의 장난이였다(....)

TypeORM에서는 2가지로 쿼리를 요청할 수 있다.

  1. EntityManager를 통한 ORM Query
  2. CreateQueryBuilder를 이용한 Query Builder

버전업을 위해서는, 쿼리빌더를 사용하는 것이 좋아서 그렇게 작업을 해놨는데, 여기서 또 문제가 발생했다.

그래서 확인을 해보니...........

EntityManager를 통한 쿼리에, 입력값이 null일 경우 limit 1이라는 쿼리가 쏴진다.
CreateQueryBuilder를 통한 쿼리에, 입력값이 null일 경우에는 undefined가 반환이 된다.

결국은 TypeORM은 최대한 에러가 발생하지 않도록, Truthy한 값을 반환해주는 것으로 결론이 났다.

왜냐하면? 페이지네이션 옵션에서도, 값이 숫자가 아니라던가 값이 입력이 안되면 해당 조건을 지워버리고 쿼리가 나간다 <-
근데 쿼리빌더에서 똑같이 하면 타입에러던짐.

그래서 지금까지 에러가 발생하지 않았는데, 쿼리빌더로 바꾸면서 값이 반환되는게 없으니 에러가 발생했던 것(....)

사실 이것을 대비하기 위하여 새로운 메소드를 만들어놨는데, 혹시 몰라서 빼놨다가 일이 터져서 더더욱 슬펐다...

아무튼 그것도 다 수정해서 배포했으니 내일도 아마 쪼끔 떨린다......


잘 돌아가면 신규 기능으로 만든 것 추가배포하고, 금요일에 최종 체크하면 새로운 작업을 정리할 것 같다

아이고 오늘 힘들었다,,,,

profile
물류 서비스 Backend Software Developer

0개의 댓글