pub enum Waiting {
Paused,
Backoff {
until: u64,
cause: HoldCause,
},
RunnerStarting,
Reseeding {
profile: String,
},
PullingImage {
profile: String,
},
NoSlot {
profile: String,
},
Memory {
needs: u64,
free: u64,
},
HostMemory {
needs: u64,
free: u64,
},
Cpu {
needs: u64,
free: u64,
},
BehindCpu {
job: u64,
},
BehindStart {
job: u64,
},
}Expand description
Why a queued job has no runner of its own yet. Jobs are served oldest first; each takes the first of these that holds for it.
Variants§
Paused
Its repository is paused.
Backoff
Runners of its repository failed, so none starts before until (seconds since the Unix epoch).
Fields
RunnerStarting
A runner started for it and waits for GitHub to hand it the job: a runner takes any job its labels match, so not necessarily this one.
Reseeding
Slot 1 of its profile is becoming the profile’s snapshot, so none of the profile’s slots starts.
PullingImage
Its profile’s image is being pulled, so none of the profile’s slots starts.
NoSlot
Every slot of its profile holds a runner.
Memory
What its runner would reserve does not fit the memory budget left. Under measured admission, free is 0
while the slice is at the high-water mark (Budget::held).
Fields
HostMemory
What its runner would reserve does not fit what the host’s memory has to spare beside its other programs
(HostBudget::spare), though it fits the slice’s budget. free is 0 while the host’s tasks stall for memory
(HostBudget::stalled).
Fields
Cpu
What its runner would reserve does not fit the CPU budget left, in millicores.
BehindCpu
An older job has waited long enough for CPU that no younger one takes CPU before it.
BehindStart
An older job is about to have a runner start for it, which takes the slot, memory or CPU this one would otherwise start with: what holds it is that start, not what runs now.
Implementations§
Source§impl Waiting
impl Waiting
Sourcepub fn reason(&self, job: &QueuedJob, status: &Status, now: u64) -> String
pub fn reason(&self, job: &QueuedJob, status: &Status, now: u64) -> String
Why job waits, in the owner’s words with the numbers that hold it, as every client says it: such as
All 2 node slots are busy or Needs 9G of memory; 2.5G of the budget is free. status is the one job
is queued in, which names the slot of a starting runner and the older job one waits behind.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Waiting
impl<'de> Deserialize<'de> for Waiting
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Waiting
impl StructuralPartialEq for Waiting
Auto Trait Implementations§
impl Freeze for Waiting
impl RefUnwindSafe for Waiting
impl Send for Waiting
impl Sync for Waiting
impl Unpin for Waiting
impl UnsafeUnpin for Waiting
impl UnwindSafe for Waiting
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.