From b29d240238d4cd154d4c647aef2be045efdbfbf0 Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 9 Mar 2026 11:15:38 +0100 Subject: [PATCH 1/3] fix: Delay controller startup to avoid 404 in initial list --- rust/operator-binary/src/main.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index f24ba855..fc82ecf6 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -2,7 +2,7 @@ // This will need changes in our and upstream error types. #![allow(clippy::result_large_err)] -use std::{os::unix::prelude::FileTypeExt, path::PathBuf}; +use std::{future::Future, os::unix::prelude::FileTypeExt, path::PathBuf}; use anyhow::{Context, Ok, anyhow}; use clap::Parser; @@ -24,7 +24,6 @@ use stackable_operator::{ telemetry::Tracing, utils::signal::SignalWatcher, }; -use tokio::sync::oneshot; use tokio_stream::wrappers::UnixListenerStream; use tonic::transport::Server; use utils::{TonicUnixStream, uds_bind_private}; @@ -209,6 +208,12 @@ async fn main() -> anyhow::Result<()> { ) .await?; + // Here, we multiply the initial reconcile signal received by the oneshot receiver + // to be able to pass it to both the default custom resource deployer and to delay + // the startup of the controller. + let initial_reconcile_signal = + SignalWatcher::new(initial_reconcile_rx.map(|_| ())); + let webhook_server = webhook_server .run(sigterm_watcher.handle()) .map_err(|err| anyhow!(err).context("failed to run webhook server")); @@ -217,7 +222,7 @@ async fn main() -> anyhow::Result<()> { .unwrap_or(operator_environment.operator_namespace.clone()); let default_secretclass = create_default_secretclass( - initial_reconcile_rx, + initial_reconcile_signal.handle(), ca_secret_namespace, client.clone(), ) @@ -232,8 +237,13 @@ async fn main() -> anyhow::Result<()> { ) .map(anyhow::Ok); + let delayed_truststore_controller = async { + let _ = initial_reconcile_signal.handle().await; + truststore_controller.await + }; + try_join!( - truststore_controller, + delayed_truststore_controller, default_secretclass, webhook_server, eos_checker, @@ -247,11 +257,11 @@ async fn main() -> anyhow::Result<()> { } async fn create_default_secretclass( - initial_reconcile_rx: oneshot::Receiver<()>, + initial_reconcile_signal: impl Future, ca_secret_namespace: String, client: Client, ) -> anyhow::Result<()> { - initial_reconcile_rx.await?; + initial_reconcile_signal.await; tracing::info!("applying default secretclass"); From e1ab1448ba907e989294ef39b352d40e0674e7df Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 9 Mar 2026 11:22:34 +0100 Subject: [PATCH 2/3] chore: Update Cargo.nix --- Cargo.nix | 18 +++++++++--------- crate-hashes.json | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Cargo.nix b/Cargo.nix index f6d7cb51..831f44d0 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -3643,7 +3643,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; libName = "stackable_telemetry"; authors = [ @@ -5726,7 +5726,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; libName = "k8s_version"; authors = [ @@ -11798,7 +11798,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; libName = "stackable_certs"; authors = [ @@ -11984,7 +11984,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; libName = "stackable_operator"; authors = [ @@ -12157,7 +12157,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -12492,7 +12492,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; libName = "stackable_shared"; authors = [ @@ -12573,7 +12573,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; libName = "stackable_versioned"; authors = [ @@ -12617,7 +12617,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; procMacro = true; libName = "stackable_versioned_macros"; @@ -12685,7 +12685,7 @@ rec { src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; rev = "f9b117c8c08557e9774f33145bb009fb74cb2437"; - sha256 = "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd"; + sha256 = "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c"; }; libName = "stackable_webhook"; authors = [ diff --git a/crate-hashes.json b/crate-hashes.json index f4d5b53b..57385259 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -6,15 +6,15 @@ "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", "git+https://github.com/stackabletech/krb5-rs.git?tag=v0.1.0#krb5-sys@0.1.0": "148zr0q04163hpirkrff5q7cbxqgwzzxh0091zr4g23x7l64jh39", "git+https://github.com/stackabletech/krb5-rs.git?tag=v0.1.0#krb5@0.1.0": "148zr0q04163hpirkrff5q7cbxqgwzzxh0091zr4g23x7l64jh39", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#k8s-version@0.1.3": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-certs@0.4.0": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-operator-derive@0.3.1": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-operator@0.106.2": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-shared@0.1.0": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-telemetry@0.6.1": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-versioned-macros@0.8.3": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-versioned@0.8.3": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-webhook@0.9.0": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#k8s-version@0.1.3": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-certs@0.4.0": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-operator-derive@0.3.1": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-operator@0.106.2": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-shared@0.1.0": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-telemetry@0.6.1": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-versioned-macros@0.8.3": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-versioned@0.8.3": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.106.2#stackable-webhook@0.9.0": "1yg7hbpgclp1zvfnhi4qkrwbgsa19v86plh77vqvwxzdxxxvxr4c", "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-telemetry-0.6.1#stackable-telemetry@0.6.1": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", "git+https://github.com/stackabletech/product-config.git?tag=0.8.0#product-config@0.8.0": "1dz70kapm2wdqcr7ndyjji0lhsl98bsq95gnb2lw487wf6yr7987" } \ No newline at end of file From 926c095c957324422f3e85b870af8a689985c1ab Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 9 Mar 2026 11:53:15 +0100 Subject: [PATCH 3/3] chore: Add changelog entry --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45e5e118..85226fbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ All notable changes to this project will be documented in this file. This behaviour is in line with the default behaviour of Helm and OLM. - Bump testing-tools to `0.3.0-stackable0.0.0-dev` ([#671]). +### Fixed + +- Fix "404 page not found" error for the initial object list ([#687]). + ### Removed - BREAKING: Removed support for ephemeral CSI volumes ([#481], [#670]). @@ -40,6 +44,7 @@ All notable changes to this project will be documented in this file. [#671]: https://github.com/stackabletech/secret-operator/pull/671 [#674]: https://github.com/stackabletech/secret-operator/pull/674 [#685]: https://github.com/stackabletech/secret-operator/pull/685 +[#687]: https://github.com/stackabletech/secret-operator/pull/687 ## [25.11.0] - 2025-11-07