ERROR dispatch에서 중복 부수 효과를 제거한다

같은 HTTP 요청이 두 번 dispatch되므로 추적 정보는 이어 쓰고 rate limit·session touch·응답 기록은 한 번만 수행한다.

REQUEST dispatch · 최초 실행
TRACE

ID 생성

MDC와 response header에 새 ID를 둔다.

SIDE EFFECT

정책 수행

rate limit과 session touch를 한 번 실행한다.

ERROR dispatch · 재진입
TRACE

ID 재사용

request attribute의 기존 ID를 복원한다.

SIDE EFFECT

중복 생략

dispatch type을 기록하고 최종 status만 남긴다.

핵심: dispatch를 구분하지 않으면 한 번의 실패가 두 번의 과금·제한·session 갱신으로 기록될 수 있다.