root layout

패스트캠퍼스

  1. 강의 질문
  2. 프로그래밍

UserIdInterceptor 에서 userIdStr가 NaN으로 뜹니다.

2025.04.09 21:02 수정

현재 Part3. 대규모 할인 쿠폰 발생 시스템 구축 에서

Ch3. Redis를 활용한 쿠폰 발행에서

02. Redis를 활용한 쿠폰 사용 테스트

부분 강의를 듣던중


v2 버전 쿠폰 테스트를 하는데

쿠폰 발급은 성공하고

쿠폰 사용은 에러가 발생하길래 디버깅 해봤습니다.


참고로 실행 모듈은

discovery-service 를 먼저 실행하고 api-gateway 를 실행하고

user-service와 coupon-service를 실행했습니다.

(참고로 discovery-service, api-gateway, coupon-service 만 할 때도 똑같은 결과가 나옵니다.)


디버깅 해본 결과

UserIdInterceptor 의

String userIdStr = request.getHeader(USER_ID_HEADER);

해당 코드가

issueCoupon 에서는

userIdStr = 1 로 잘 들어오는데

useCoupon 에서는

userIdStr = NaN 으로 들어옵니다..


어이가 없어서

v1 버전으로 다시 해보니

똑같이

issueCoupon 에서는

userIdStr = 1 로 잘 들어오는데

useCoupon 에서는

userIdStr = NaN 으로 들어옵니다.


그런데 문제는 저는

coupon.html 코드는 제공해 주신 github에 있는 코드를 그대로 복사해와 붙여넣었습니다

(코드 비교 툴로 비교해도 동일합니다)


그런데 더 문제 인 것은 분명

v1 을 테스트하는 강의를 수강하고 있을 때는

쿠폰 사용까지 문제 없이 잘 됐었습니다.

그런데 그 뒤로 전혀 변경한 것 없이 강의 따라 개발만 했습니다.


다음은 에러입니다.

2025-04-09T20:30:24.024+09:00 ERROR 22070 --- [coupon-service] [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: Invalid X-USER-ID format] with root cause

java.lang.IllegalStateException: Invalid X-USER-ID format
	at com.example.couponservice.config.UserIdInterceptor.preHandle(UserIdInterceptor.java:31) ~[main/:na]


에러를 보면

currentUserId.set(Long.parseLong(userIdStr));

해당 코드에서 파싱이 안된다고 하는데 당연히 userIdStr = NaN 이니까 Long 으로 파싱이 안되는것이고

문제는 대체왜 쿠폰을 사용하려고 할 때만

userIdStr = NaN 이 되는지 모르겠습니다..



원인을 알수가 없는데 의심 될만한

어떤 원인이 있을 수 있을까요?


답변 

연관 질문

커뮤니티 질문보기