From 21188e9e36a0fe26dc50898ca57f14bd5cb2b36c Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 18 Feb 2025 21:03:11 +0100 Subject: [PATCH] feat: add ready endpoints for workers to enterprise --- backend/src/main.rs | 19 +++++++++---- backend/windmill-common/src/lib.rs | 26 +++++++++++------ backend/windmill-worker/src/worker_flow.rs | 1 + .../src/lib/components/InstanceSetting.svelte | 26 +++++++++++++++++ .../lib/components/InstanceSettings.svelte | 28 ------------------- 5 files changed, 57 insertions(+), 43 deletions(-) diff --git a/backend/src/main.rs b/backend/src/main.rs index 58d22b6eee5e0..56eae30332ee1 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -901,14 +901,21 @@ Windmill Community Edition {GIT_VERSION} }; let metrics_f = async { - if METRICS_ENABLED.load(std::sync::atomic::Ordering::Relaxed) { - #[cfg(not(feature = "enterprise"))] + let enabled = METRICS_ENABLED.load(std::sync::atomic::Ordering::Relaxed); + #[cfg(not(feature = "enterprise"))] + if enabled { tracing::error!("Metrics are only available in the EE, ignoring..."); - - #[cfg(feature = "enterprise")] - windmill_common::serve_metrics(*METRICS_ADDR, _killpill_phase2_rx, num_workers > 0) - .await; } + + #[cfg(all(feature = "enterprise", feature = "prometheus"))] + windmill_common::serve_metrics( + *METRICS_ADDR, + _killpill_phase2_rx, + num_workers > 0, + enabled, + ) + .await; + Ok(()) as anyhow::Result<()> }; diff --git a/backend/windmill-common/src/lib.rs b/backend/windmill-common/src/lib.rs index 802af6196b4a4..0d9f470b41c89 100644 --- a/backend/windmill-common/src/lib.rs +++ b/backend/windmill-common/src/lib.rs @@ -155,8 +155,6 @@ pub async fn shutdown_signal( } use tokio::sync::RwLock; -#[cfg(feature = "prometheus")] -use tokio::task::JoinHandle; use utils::rd_string; #[cfg(feature = "prometheus")] @@ -164,23 +162,31 @@ pub async fn serve_metrics( addr: SocketAddr, mut rx: tokio::sync::broadcast::Receiver<()>, ready_worker_endpoint: bool, -) -> JoinHandle<()> { - use std::sync::atomic::Ordering; - + metrics_endpoint: bool, +) -> anyhow::Result<()> { + if !metrics_endpoint && !ready_worker_endpoint { + return Ok(()); + } use axum::{ routing::{get, post}, Router, }; use hyper::StatusCode; - let router = Router::new() - .route("/metrics", get(metrics)) - .route("/reset", post(reset)); + let router = Router::new(); + + let router = if metrics_endpoint { + router + .route("/metrics", get(metrics)) + .route("/reset", post(reset)) + } else { + router + }; let router = if ready_worker_endpoint { router.route( "/ready", get(|| async { - if IS_READY.load(Ordering::Relaxed) { + if IS_READY.load(std::sync::atomic::Ordering::Relaxed) { (StatusCode::OK, "ready") } else { (StatusCode::INTERNAL_SERVER_ERROR, "not ready") @@ -204,6 +210,8 @@ pub async fn serve_metrics( tracing::error!("Error serving metrics: {}", e); } }) + .await?; + Ok(()) } #[cfg(feature = "prometheus")] diff --git a/backend/windmill-worker/src/worker_flow.rs b/backend/windmill-worker/src/worker_flow.rs index 864f3002b1743..50f6ee8607f57 100644 --- a/backend/windmill-worker/src/worker_flow.rs +++ b/backend/windmill-worker/src/worker_flow.rs @@ -615,6 +615,7 @@ pub async fn update_flow_status_after_job_completion_internal( "error while deleting parallel_monitor_lock: {e:#}" )) })?; + if r.is_some() { tracing::info!( "parallel flow has removed lock on its parent, last ping was {:?}", diff --git a/frontend/src/lib/components/InstanceSetting.svelte b/frontend/src/lib/components/InstanceSetting.svelte index 599ca28229517..03ac00aa02ce8 100644 --- a/frontend/src/lib/components/InstanceSetting.svelte +++ b/frontend/src/lib/components/InstanceSetting.svelte @@ -61,6 +61,8 @@ let renewing = false let opening = false + let to: string = '' + async function reloadKeyrenewalAttemptInfo() { latestKeyRenewalAttempt = await SettingService.getLatestKeyRenewalAttempt() } @@ -747,6 +749,30 @@ {:else if setting.fieldType == 'smtp_connect'}
{#if $values[setting.key]} +
+
- {#if category == 'SMTP'} - {@const smtp = $values['smtp_settings']} -
-
- {/if} {/each}