본문으로 건너뛰기

잡 상태와 종료 이유

잡이 거치는 상태 값, 종료 이유, 오류 필드와 각 상태에서 과금이 어떻게 되는지 설명합니다

잡은 queued에서 시작해 preparing, running을 거쳐 여섯 가지 종료 상태 중 하나로 끝나고, 과금은 running 구간만 셉니다

상태 흐름

queued ──▶ preparing ──▶ running ──▶ succeeded | failed | cancelled | timed_out | credit_exhausted
  │            │                                          (실행 초를 1분 단위로 올림해 과금)
  │            └──▶ platform_error (VM 준비 실패, 과금 없음)
  └──▶ cancelled | failed | credit_exhausted (시작 전 종료, 과금 없음)
상태뜻과금
queued접수됨, 빈 VM 슬롯이나 티어 동시 실행 여유를 기다림없음
preparing슬롯을 받아 베이스 이미지를 복제하고 VM을 부팅하는 중없음
running스크립트가 실행 중 (started_at부터)진행 중
succeeded스크립트 종료 코드 0실행 분
failed스크립트 종료 코드가 0이 아님, 또는 시작 전 승인 거절실행 분 (시작 전이면 0)
cancelled취소 요청으로 끝남멈춘 시점까지의 실행 분 (시작 전이면 0)
timed_outtimeout_minutes를 넘겨 멈춤제한 시간까지의 분
credit_exhausted조직 잔액이 다음 1분을 감당하지 못해 분 경계에서 멈춤멈춘 시점까지의 분
platform_errorVM 준비 실패, 러너 장애, 서버 재시작 등 플랫폼 책임0, 원장에 기록하지 않음

종료 상태 여섯 가지(succeeded, failed, cancelled, timed_out, credit_exhausted, platform_error)에서는 end_reason이 상태와 같은 값으로 채워집니다

대기 이유

queued인 동안 queued_reason이 왜 기다리는지 알려줍니다

값뜻
capacity빈 VM 슬롯을 기다리는 중 (막 접수된 잡의 기본값)
tier_concurrency_limit조직의 동시 실행 잡 수가 티어 한도에 닿음 실행 중인 잡이 끝나면 차례대로 시작

빈 슬롯은 대기 잡이 있는 조직 가운데 지금 실행 중인 잡이 가장 적은 조직에 먼저 가고, 같으면 가장 오래 기다린 잡의 조직이 먼저입니다

실행 중인 잡을 빼앗는 선점은 없습니다

오류 필드

잡이 스크립트 밖의 이유로 끝나면 error에 오류 봉투가 들어갑니다

{
  "status": "credit_exhausted",
  "end_reason": "credit_exhausted",
  "error": {
    "code": "credit_exhausted",
    "message": "Stopped at a minute boundary: the organization balance ran out",
    "retryable": false,
    "retry_after_s": null,
    "fault": "payment",
    "request_id": "job_7Kp2QmX9bT4vR1sLwZ3n",
    "details": { "topup_url": "https://xenoci.com/console/billing" }
  }
}
error.code언제fault
credit_exhausted실행 중 잔액 소진 (status: credit_exhausted)payment
insufficient_credit대기 중 잔액이 1분 요금 밑으로 내려가 시작 못 함 (status: credit_exhausted)payment
workspace_spend_limit, tier_monthly_limit대기 중 월 한도에 닿아 시작 못 함 (status: failed)payment
internal_errorVM 준비 두 번 실패, 러너 장애, 서버 재시작 (status: platform_error)platform

스크립트 자체가 실패한 failed에는 error가 없고 exit_code만 있습니다

시각과 과금 필드

필드뜻
created_at접수 시각
started_at스크립트 시작 시각 과금 시작점
ended_at종료 시각 취소와 시간 초과는 멈추기로 한 시각
run_secondsended_at - started_at을 초 단위로 내림
billed_minutesceil(run_seconds / 60) 0초면 0분, 61초면 2분
rate_micro_usd_per_min대기열을 떠날 때 고정된 분당 요율
amount_micro_usd정산 금액 실행 중에는 지금까지 약정된 분의 금액

정산 금액은 살아 있는 크레딧 로트 합을 넘지 않으므로 잔액이 음수가 되는 일은 없습니다

상태 확인 방법

xenocast status job_7Kp2QmX9bT4vR1sLwZ3n
xenocast wait job_7Kp2QmX9bT4vR1sLwZ3n --timeout 600

wait는 종료 상태가 될 때까지 2초마다 다시 읽고, 제한 시간 안에 끝나지 않으면 종료 코드 124로 돌아옵니다

콘솔에서는 실행 → 잡 메뉴에서 상태별로 거르고 상세 패널에서 로그를 봅니다

다음 단계