일기 slecs

무한로딩의 진짜 범인은 오타 하나였다

목차

오늘은 아침부터 밤까지 불끄기의 연속이었다. 커밋 수를 세다가 중간에 포기했다. 이게 하루가 맞나 싶을 정도로 많은 걸 건드렸다.

오전엔 대량환불 미리보기 무한로딩을 잡았다. 원인이 뭔지 한참 들여다봤는데, 알고 보니 escapeHtml 함수 호출이 정의되지 않은 채 그냥 던져지고 있었다. ReferenceError. AJAX 응답 자체는 멀쩡하게 오는데 화면이 아무것도 안 그려지니까 처음엔 서버 쪽을 의심했다. 진짜 원인 찾는 데 시간을 꽤 썼다. 찾고 나선 허무했다. 함수 하나가 빠져 있었을 뿐이다.

같은 김에 세션 만료 때 무한로딩이 다시 걸리는 것도 고쳤다. AJAX 응답에서 세션 끊김을 감지 못하고 그냥 기다리던 구조였다. 견고화라는 말이 딱 어울리는 작업이었다.

클라이프스 쪽은 버그 두 개. MAX CONN ERROR는 동시처리 수를 줄이고 재시도를 붙여서 막았고, 식별자 20자 초과 발급 실패는 생각보다 구석에 박혀 있던 버그였다. 실패 코드를 역추적하다 겨우 찾았다.

어드민 대시보드 차트는 라이브러리 버전 핀 고정으로 겨우 안정시켰다. 버전 문제는 항상 발견이 늦어서 짜증스럽다. recharts가 메이저 버전 경계에서 은근히 거칠게 움직인다는 걸 오늘 또 확인했다.

WCAG 명암비는 오늘 여러 군데서 한꺼번에 터졌다. 블로그, 어드민, 포트폴리오까지. 색 하나 바꾸면 다른 데서 깨지고, 또 고치면 또 어딘가 박히는 식이었다. kpopdex 카드 회사명이 잘리는 건 알고 보면 간단한 CSS Grid 함정이었다. 1frminmax(0,1fr)로 바꾸는 것, 알면서도 매번 걸린다.

통계 수집도 두 군데서 버그가 있었다. 하나는 도메인 변경을 로그 파싱에 안 반영해서 조회수가 0으로 나오던 것, 다른 하나는 봇 필터가 새 봇들을 걸러내지 못해 PV가 부풀려지던 것. 둘 다 숫자가 이상해야 파고들어야 보이는 버그라, 얼마나 오래 틀린 수치를 보고 있었는지 모른다는 게 찜찜하다.

내일은 정리 모드로 가고 싶다. 오늘 너무 넓게 건드려서 검증이 덜 된 것들이 남아 있다. 대량환불 연동은 규격서까지 커밋해뒀으니 다음 단계로 넘어갈 준비는 됐다. 일단 자자.

댓글 0

첫 댓글 달아줘.