Skip to main content

Job Lifecycle

Every job in JobMaster follows a strictly defined state machine. Monitoring these statuses lets you observe exactly how work moves from your code to the database and into execution.

Job Statuses

StatusPhaseDescriptionStorage
SavePendingEntry PointHigh-Throughput Mode. The job is accepted by the Agent but not yet persisted to the Master DB. The calling application continues without waiting for Master DB I/O.Agent (Transient)
HeldOnMasterDurable StorageJobs scheduled for the future. They stay here to keep the Agent lean, only moving to a bucket once they fall within the TransientThreshold window.Master Database
AssignedToBucketOnboardingThe job has been moved to an Agent Worker Bucket. It is visible to execution nodes and ready to be claimed.Agent (Bucket)
OnboardedStagingThe job has been accepted by a bucket and is being prepared for execution.Agent (Bucket)
QueuedStagingThe job has been pulled from the bucket into a specific worker's local memory and is awaiting an available execution thread.Worker Memory
ProcessingExecutionYour IJobHandler logic is currently running. The worker holds an active claim on this job.Worker Thread
SucceededTerminalThe handler finished successfully. The result is synced back to the Master DB for auditing.Audit Log (Master)
FailedTerminalThe job has exhausted all retry attempts without success.Audit Log (Master)
CancelledTerminalThe job was manually or programmatically aborted before completion.Audit Log (Master)

Flow Overview

Your Code


SavePending (Agent)

├─► HeldOnMaster (future jobs) ──► AssignedToBucket ──► Onboarded ──► Queued ──► Processing ──► Succeeded/Failed

└─► AssignedToBucket (immediate) ──► Onboarded ──► Queued ──► Processing ──► Succeeded/Failed

For a detailed explanation of the two scheduling paths (SavePending vs standard flow), see the Architecture Overview.