StateMachines::InvalidTransition: Cannot transition mask_state via :missing from :uploaded (Reason(s): Mask state cannot
Service
cupixworks-api
Occurrences
205
Status
Reported
Confidence
85%
Actionability
44%
Cluster ID
83697037-1dae-4f91-84ed-efe8b7ba79db
First Seen
2025-01-22 12:01 UTC
Last Seen
2026-08-04 19:57 UTC
Actions
StateMachines::InvalidTransition: Cannot transition mask_state via :missing from :uploaded (Reason(s): Mask state cannot
What Happened#
cupixworks-api (tesla) 의 PUT /api/v1/panos/:id/check_mask_uploading 엔드포인트에서 StateMachines::InvalidTransition 이 발생한다. 클라이언트가 아직 마스크 업로드가 완료되지 않은 pano 에 대해 상태 확인을 요청하면 MaskableRepository#check_mask_uploading 이 @model.missing_mask_state! 를 호출하는데, 해당 pano 의 mask_state 가 이미 uploaded 상태이면 missing 이벤트의 transition 규칙(any - %i[missing uploaded])이 uploaded 를 source 에서 제외하고 있어 예외가 발생한다. 이 예외는 ClientErrorController 에서 catch 되어 HTTP 400 (STAT10001) 으로 정상 변환되어 응답된다. 16개월간 201건, 배치성 폴링 요청에서 산발적으로 발생.
Quick Facts#
| Field | Value |
|---|---|
| exception.class | StateMachines::InvalidTransition |
| exception.message | Cannot transition mask_state via :missing from :uploaded (Reason(s): Mask state cannot transition via "missing") |
| top_frame | app/repositories/concerns/maskable_repository.rb:44 |
| runtime | Ruby 3.3.7 / state_machines 0.6.0 |
| env | production (cupixworks-api) |
| http_status | 400 (STAT10001, Cupix::Errors::InvalidState) |
Affected Teams#
| Team / Domain | Error Count | Impact |
|---|---|---|
| cupixworks-api (pano mask upload) | 201 (16개월) | 클라이언트가 400 응답을 받음. 서버 크래시/데이터 손상 없음 |
Timeline#
- 2025-01-22 21:01 KST — 최초 발생 (first_seen)
- 2026-07-28 17:12~17:24 KST — 배치성 발생 (동일 초에 다수의 distinct pano ID)
- 2026-08-03 15:10~15:12 KST — 최근 발생 (last_seen), pano 15364500 / 15364150
Scoring#
Confidence 85% · Actionability 44%
Confidence#
| Dimension | Score | Detail |
|---|---|---|
| Evidence completeness | 5/5 | 17 code refs, 3 log queries |
| Code path explicitness | 3/3 | 17 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 | 13 file(s) |
| Single repo | 1/3 | 2 service(s) |
| Immediate actions | 0/3 | absent |
| Testability | 0/3 | no test info |
| External dependency | 1/3 | external deps found |
| Data migration | 3/3 | no migration |