ES /docs

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#

  1. 2025-01-22 21:01 KST — 최초 발생 (first_seen)
  2. 2026-07-28 17:12~17:24 KST — 배치성 발생 (동일 초에 다수의 distinct pano ID)
  3. 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