Jobs
Every state-changing operation is a job. The Jobs page is therefore the first place to look when something you started did not finish.
States
| State | Meaning |
|---|---|
| Queued | Accepted, waiting for a slot |
| Running | In progress |
| Completed | Finished successfully |
| Failed | Finished unsuccessfully. The log says why |
| Interrupted | The API restarted while this job was running |
Interrupted is not retried automatically. A job that was halfway through a destructive operation cannot safely be repeated without someone looking at it, so the product stops and tells you rather than guessing. Queued jobs, which had not started, are picked up again on restart.
Reading a failed job
Each job keeps its full log. Open the job and read it; it is streamed live while running and downloadable afterwards.
A licence denial appears here as a failed job whose message names the capability, not a method or a type. "Unattended scheduled maintenance requires the Professional edition" is the whole explanation, by design.
Concurrency
maxConcurrentJobs in odoo.json sets how many jobs run at once. The default is 1, meaning
strictly serial.
Two rules hold at any setting:
- Two jobs never run against the same instance simultaneously.
- A server-level job runs alone: the queue drains, it runs, then the queue resumes. Docker, PostgreSQL and the filesystem are shared, so overlapping server work corrupts things.
Raising the limit helps a server with many instances doing independent work. It does not speed up one instance.
Secrets
Secrets never appear in a job's payload, result or log. A password you submit is exchanged for an opaque reference that the handler redeems once; a password the server generates is revealed through a separate one-time endpoint with a short lifetime.
If you are looking for a generated password after the fact, it is gone. Reset it rather than hunting for it.
Cancelling
A queued job can be cancelled safely. A running job is mid-mutation of real state, so cancelling one is a decision, not a convenience. Prefer letting it finish and correcting afterwards.