RestClient::Forbidden: 403 Forbidden
RestClient::Forbidden: 403 Forbidden
What Happened#
cupixworks-api (tesla) 의 Cupix::NotificationService#create_user_recipe 가 notification-service 호출 시 인증 헤더를 만들기 위해 self.class.service_jwt 를 호출하는데, service_jwt 는 private_class_method 로 선언되어 있어 explicit receiver (self.class) 로 호출할 수 없다. 그 결과 NoMethodError: private method 'service_jwt' called for class Cupix::NotificationService 가 발생한다. FacilityPermission 생성/권한 부여 이벤트마다 pub/sub subscriber UserRecipeGenerator 가 이 경로를 타므로, 2026-08-04 dev 환경에서 약 11분 동안 100건 이상 폭증했다.
이 클러스터의 Representative Error 는 RestClient::Forbidden: 403 Forbidden 이지만, 이는 Error Tracking 이 여러 변종을 하나의 issue 로 묶으면서 고정한 STALE 샘플이다. 최근(last_seen 인근 및 그 이후) 로그의 실제 신호는 위의 service_jwt NoMethodError 이므로 이를 root cause 로 분석한다 (아래 Log Evidence 의 discrepancy 항목 참조).
Quick Facts#
| Field | Value |
|---|---|
| exception.class | NoMethodError |
| exception.message | private method 'service_jwt' called for class Cupix::NotificationService |
| top_frame | lib/cupix/notification_service.rb:20 (self.class.service_jwt) |
| runtime | Ruby / Rails (tesla), Sidekiq/pub-sub subscriber |
| deploy | origin/develop (buggy). 54f4417c2 이후. origin/master 는 미영향 |
| env | development (dev cluster, s3.me-central2 / cupixworks-dev-hosting-*) |
Affected Teams#
| Team / Domain | Error Count | Impact |
|---|---|---|
| cupixworks-api (notification recipe 생성) | 100+ (2026-08-04 17:37–17:48 burst, 그 외 산발) | FacilityPermission 부여 시 user email recipe (record_preview_ready / record_processing_completed / facility_new_project) 미생성 → 해당 사용자 이메일 알림 누락 |
Timeline#
- 2026-06-04 13:47 KST —
a6a535e8d(TSLA-13082):api_token→ 내부 user JWT (service_jwt) 인증으로 교체 - 2026-06-11 09:31 KST —
54f4417c2(TSLA-13082 rubocopLint/IneffectiveAccessModifier자동수정):private_class_method :service_jwt, :find_or_create_internal_user추가 →self.class.service_jwt호출이 깨짐 - 2026-07-10 10:31–10:40 KST — 클러스터 first_seen/last_seen (Representative "403 Forbidden", Datadog 14일 retention 밖이라 원본 로그 조회 불가)
- 2026-08-04 17:37–17:48 KST — dev 환경에서
NoMethodError private method 'service_jwt'100+건 폭증 (현재 실제 신호)
Scoring#
Confidence 85% · Actionability 52%
Confidence#
| Dimension | Score | Detail |
|---|---|---|
| Evidence completeness | 5/5 | 6 code refs, 5 log queries |
| Code path explicitness | 3/3 | 6 file:line refs |
| Log evidence | 3/3 | section, query, pattern |
| RCA structure | 3/3 | 3/3 sections |
| Revision history | 0/3 | 0 revision(s) |
| Agent execution | 3/3 | success |
Actionability#
| Dimension | Score | Detail |
|---|---|---|
| Fix complexity | 5/5 | trivial |
| Affected files | 1/5 | 10 file(s) |
| Single repo | 1/3 | 2 service(s) |
| Immediate actions | 0/3 | absent |
| Testability | 2/3 | test mentioned |
| External dependency | 1/3 | external deps found |
| Data migration | 3/3 | no migration |