From 90fa5b3cedec46b5a5ec102834c5a635d3bbf225 Mon Sep 17 00:00:00 2001 From: hugocasa Date: Tue, 17 Feb 2026 17:32:52 +0100 Subject: [PATCH] native mode nits (#7981) * native mode UI nits * accept flow jobs on native workers * limit native mode to non-dep jobs + flow tag infobox --- backend/windmill-api-scripts/src/scripts.rs | 4 + backend/windmill-worker/src/worker.rs | 11 ++ .../src/lib/components/WorkerGroup.svelte | 170 +++++++++++------- .../(root)/(logged)/workers/+page.svelte | 5 +- 4 files changed, 129 insertions(+), 61 deletions(-) diff --git a/backend/windmill-api-scripts/src/scripts.rs b/backend/windmill-api-scripts/src/scripts.rs index 85ec0edae4..65df3e0628 100644 --- a/backend/windmill-api-scripts/src/scripts.rs +++ b/backend/windmill-api-scripts/src/scripts.rs @@ -1083,6 +1083,10 @@ async fn create_script_internal<'c>( )) } else if ns.tag.as_ref().is_some_and(|x| x.contains("$args[")) { None + } else if lang == ScriptLang::Bunnative { + // if a custom tag is set for a bunnative script, this prevents the custom tag to be used for the dependency job + // forcing the bundling to run on a worker with the bun tag + None } else { ns.tag }; diff --git a/backend/windmill-worker/src/worker.rs b/backend/windmill-worker/src/worker.rs index 4481e46a60..547075933a 100644 --- a/backend/windmill-worker/src/worker.rs +++ b/backend/windmill-worker/src/worker.rs @@ -3011,6 +3011,17 @@ pub async fn handle_queued_job( } if NATIVE_MODE_RESOLVED.load(std::sync::atomic::Ordering::Relaxed) { + // Block all dependency jobs: native scripts don't have dependency jobs, and bunnative + // dep jobs are routed to bun workers (lang=bun, tag=bun) even when they have a custom tag . + if matches!( + job.kind, + JobKind::FlowDependencies | JobKind::AppDependencies | JobKind::Dependencies + ) || job.tag == "dependency" + { + return Err(Error::ExecutionErr( + "Worker is in native mode and cannot execute dependency jobs".to_string(), + )); + } if let Some(lang) = &job.script_lang { if !lang.is_native() { return Err(Error::ExecutionErr(format!( diff --git a/frontend/src/lib/components/WorkerGroup.svelte b/frontend/src/lib/components/WorkerGroup.svelte index 07f2cd8b1f..22d35906cb 100644 --- a/frontend/src/lib/components/WorkerGroup.svelte +++ b/frontend/src/lib/components/WorkerGroup.svelte @@ -290,8 +290,11 @@ (workers.length > 0 && workers.some(([_, pings]) => pings.some((p) => p.native_mode === true))) ) - let nonNativeTags = $derived((nconfig?.worker_tags ?? []).filter((t) => !nativeTags.includes(t))) + let nonNativeTags = $derived( + (nconfig?.worker_tags ?? []).filter((t) => !nativeTags.includes(t) && t !== 'flow') + ) let isAutoNativeMode = $derived(name === 'native') + let isNativeModeEnabled = $derived(nconfig?.native_mode === true || isAutoNativeMode) $effect(() => { ;($superadmin || $devopsRole) && listWorkspaces() }) @@ -399,33 +402,53 @@ {/if} + {#if nconfig !== undefined} +
+ + {/if} + {#if nconfig !== undefined}