wip(#3001): remove submit layer, rescue power ops into job_queue/power.rs
TREE IS RED ON PURPOSE — there is no compiling intermediate between
deleting submit and converting every caller. Checkpoint commit so the
work is durable; do not "fix" it by restoring submit.
Done:
- JobQueue::submit -> JobQueue::insert (no source/reason/container;
returns the ids insert_job names).
- submit.rs deleted. Its 6 pure chain builders + 3 async *_many
gatherers were NOT wrapper code and are rescued into
job_queue/power.rs (templates.rs documents power ops as living
outside it, because their shape needs a live is_running read).
- Converted: meta_inputs 1, topology 2, permissions 3, auto_update 2,
actions 3, lifecycle_handlers 3.
- Dropped source/reason at every converted site: nothing ever read
NodeKind::Dag's fields (only `{ .. }` matches exist), so they are
write-only. Dead reason-only locals deleted; the boot sweep's summary
became a tracing::info! rather than being lost.
Remaining: dashboard/lifecycle_ops 7, server.rs 7, and the test suite —
tests.rs has its own submit() helper whose u64 return is used as the
handle to navigate the inserted DAG, so those need a different way to
find nodes, not a mechanical port.
This commit is contained in:
parent
6f87821110
commit
7c0d9d2379
9 changed files with 198 additions and 301 deletions
|
|
@ -109,12 +109,11 @@ pub async fn ensure_root_agent(coord: &Arc<Coordinator>) -> Result<()> {
|
|||
tracing::warn!(
|
||||
"manager container exists but no applied flake — forcing rebuild to migrate"
|
||||
);
|
||||
if let Err(e) = coord.job_queue.submit(
|
||||
crate::job_queue::Source::AutoUpdate,
|
||||
"manager migration: no applied flake".to_owned(),
|
||||
|b| crate::job_queue::templates::rebuild(b, MANAGER_NAME, true),
|
||||
) {
|
||||
tracing::warn!(error = ?e, "manager migration rebuild submit failed");
|
||||
if let Err(e) = coord.job_queue.insert(|b| {
|
||||
crate::job_queue::templates::rebuild(b, MANAGER_NAME, true);
|
||||
Vec::new()
|
||||
}) {
|
||||
tracing::warn!(error = ?e, "manager migration rebuild insert failed");
|
||||
}
|
||||
} else {
|
||||
tracing::debug!("manager container already present");
|
||||
|
|
@ -378,18 +377,19 @@ fn submit_boot_tree(
|
|||
n_deferred: usize,
|
||||
n_skipped: usize,
|
||||
) {
|
||||
use crate::job_queue::Source;
|
||||
|
||||
// Fully-quiet boot (nothing stale, nothing drifted) submits nothing.
|
||||
// Fully-quiet boot (nothing stale, nothing drifted) inserts nothing.
|
||||
if !any_stale && drifted.is_empty() {
|
||||
return;
|
||||
}
|
||||
let reason = format!(
|
||||
"boot: {} rebuild(s), {} reconcile(s), {} deferred (offline), {} up-to-date",
|
||||
fanout.len(),
|
||||
drifted.len(),
|
||||
n_deferred,
|
||||
n_skipped,
|
||||
// The summary the sweep used to hand the container as its `reason` is a log
|
||||
// line now: it was only ever stored on a node nobody read, and the counts
|
||||
// are worth having where they can actually be seen.
|
||||
tracing::info!(
|
||||
rebuilds = fanout.len(),
|
||||
reconciles = drifted.len(),
|
||||
deferred = n_deferred,
|
||||
up_to_date = n_skipped,
|
||||
"boot: sweep"
|
||||
);
|
||||
|
||||
// The sweep's own rebuild subgraphs emit their `Rebuilt` events as they
|
||||
|
|
@ -397,10 +397,11 @@ fn submit_boot_tree(
|
|||
// The subgraphs also carry their own per-agent crash-watch suppression
|
||||
// during their `Swap` (applied at claim time); a reconcile-only boot needs
|
||||
// no transient.
|
||||
if let Err(e) = coord.job_queue.submit(Source::AutoUpdate, reason, |b| {
|
||||
if let Err(e) = coord.job_queue.insert(|b| {
|
||||
boot_nodes(b, any_stale, fanout, drifted);
|
||||
Vec::new()
|
||||
}) {
|
||||
tracing::warn!(error = ?e, "boot: sweep DAG submit failed");
|
||||
tracing::warn!(error = ?e, "boot: sweep DAG insert failed");
|
||||
}
|
||||
coord.emit_rebuild_queue_snapshot();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue