Skip to content

fix: 올리브영 브라우저 준비 중 조회 만료 방지 - #208

Merged
hmmhmmhm merged 1 commit into
mainfrom
fix/inventory-reliability
Oct 5, 2026
Merged

hmmhmmhm merged 1 commit into
mainfrom
fix/inventory-reliability

Conversation

@hmmhmmhm

@hmmhmmhm hmmhmmhm commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

올리브영 재고 조회가 매장 검색과 상품 검색을 동시에 요청할 때, 첫 매장 검색의 브라우저 준비가 35초 걸리면 뒤따른 상품 검색이 30초 대기 상한에 걸려 503을 반환했습니다. 대기 상한을 40초로 조정해 이 경우 두 조회가 모두 실행되도록 합니다.

두 만료 검사에 같은 상수를 사용하며 취소, 슬롯 8개, 소비자·분당·일일 상한, 직렬 실행과 캐시는 유지합니다. 준비된 세션의 대기40초와 API watchdog18초를 Worker 기본60초 예산 안에 배치하는 목표이며, 추가 브라우저 준비·회수까지 포함한 전체 응답시간 보장은 아닙니다. 인증/준비 실패는 성공이나 재고0으로 처리하지 않습니다.

검증:

  • 실제 lifecycle와 relay를 연결한 가상시간 테스트에서 이동10초+준비25초 후 매장/상품 검색 모두200, 한 페이지 재사용 및 종료 후 잔여 타이머0을 확인했습니다. 기존30초 상한으로 되돌렸을 때 상품 검색503으로 실패하는 것도 확인했습니다.
  • 39999ms 성공/정확히40000ms 미실행, 만료된 합류자503/유효한 합류자200, 준비 실패 캐시 미저장, 기존 취소·상한 테스트를 확인했습니다.
  • npm run check, npm run test:coverage, npm run build 통과. 208개 테스트 파일/2258개 테스트, Statements·Branches·Functions·Lines 모두100%입니다. 독립 명세/품질 리뷰 통과.

운영 Mac의 기존 중계에는 이 스크립트 하나만 백업·원자적 교체 후 정상 종료/재기동으로 반영했습니다. 재기동 후 ready/pages1 상태와 공개 REST에서 강남 수분크림3.3초·명동 핸드크림2.15초, 각 stockCheckedCount1/stockUncheckedCount0의200 응답을 확인했습니다. Worker 배포와 npm 버전 변경은 필요하지 않습니다. 다이소·CU·세븐일레븐·GS25의 별도 재고 점검은 이 코드 변경에 포함하지 않습니다.

@hmmhmmhm
hmmhmmhm marked this pull request as ready for review October 5, 2026 01:57
@hmmhmmhm
hmmhmmhm merged commit 9d05ed6 into main Oct 5, 2026
6 checks passed
@hmmhmmhm
hmmhmmhm deleted the fix/inventory-reliability branch October 5, 2026 01:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant