Living dev note. Iterate freely.
Status
- Phase A shipped queue model + namespaced CRUD +
Worker.queues(parallel to the legacy lane primitive). - Phase A.5 (current) collapsed three competing primitives —
Lane, the legacy FK-basedQueue(modeId/policy/minHosts/maxHosts), and the new array-membership Queue — into one. The Lane model is gone;Worker.queueIdis gone;Invocation.queueIdis gone. The scheduling primitive is named Queue and workers reference it by name viaWorker.queues: String[]. - Phase B (next): S3 payload store + elasticity controller backed
by
Queue.daemonTemplate.
Default-queue membership
The empty array. A worker that doesn't carry an explicit queues
field — or carries [] — is in the default queue. There's no
sentinel string in the schema. lakeshore queues add default …
materialises the row at first list / show so a cold namespace still
sees a predictable fallback target, but the membership relation is
defined by absence, not by presence of "default" in the array.
Queue Types
We have a few different queues:
- Queue: regular job queue, FIFO
- Elastic Queues: a job queue connected with providers, that can create new physical hosts
- Priority Queues: a job queue that returns the highest priority jobs first.
- Boltzmann Queue: a priority queue that uses boltzmann sampling at a temperature to determine which job gets dispatched first.
- FILO: first in last out.
Elasticity
- Fixed Pool
- Fully Elastic Queue: a new job == new machine (daemon? )
- Elastic Pool with utilization threshold
- Max daemon / runs count
Provider / Daemon types
- aws: creates new physical machines. each with one daemon, can launch many job invocations.
- slurm: one daemon that can create new job invocations as slurm jobs.
- kube: one daemon that can create new job invocations as new docker instances.
- ssh: one daemon can run many docker / gvisor runs.
Examples
The Queue will be launching and dispatching jobs to each daemon. However, now all queues need to do so, a queue can also be a simple, non-provider connected priority queue.
Batch Mode:
Packing multiple jobs in the same docker and SLURM run makes the system a lot more efficient.