From 5451d95e90aa7b031c6e409da50c1736e008867f Mon Sep 17 00:00:00 2001 From: Javier Marcos <1271349+javuto@users.noreply.github.com> Date: Mon, 30 Mar 2026 21:41:16 +0200 Subject: [PATCH 1/3] Retrieving latest release metadata from stats.osctrl.net in osctrl-api --- cmd/api/main.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cmd/api/main.go b/cmd/api/main.go index 7e8531ae..c906e06f 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -169,6 +169,22 @@ func init() { flags = config.InitAPIFlags(flagParams) } +// Retrieve latest release information and compare +func checkLatestRelease() { + log.Info().Msg("Checking for the latest release... (timeout 10s)") + latest, err := version.RetrieveVersionData(version.VersionDataURL) + if err != nil { + log.Err(err).Msg("Error retrieving latest release information") + return + } + if version.CheckSuggestedRelease(latest.SuggestedRelease) { + log.Info().Msgf("A newer version of %s is available: %s (current: %s)", serviceName, latest.SuggestedRelease, buildVersion) + log.Info().Msgf("Release notes: %s", latest.MoreInformation) + } else { + log.Info().Msgf("%s is up to date with the latest release (%s)", serviceName, buildVersion) + } +} + // Go go! func osctrlAPIService() { // ////////////////////////////// Backend @@ -570,6 +586,8 @@ func main() { } // Initialize service logger initializeLoggers(*flagParams.Service) + // Analyze version and compare with the latest release + checkLatestRelease() // Run the service osctrlAPIService() return nil From a64a6fb718648540e1587b5f55fe407d5bff23f7 Mon Sep 17 00:00:00 2001 From: Javier Marcos <1271349+javuto@users.noreply.github.com> Date: Mon, 30 Mar 2026 22:32:27 +0200 Subject: [PATCH 2/3] Goroutine for the release check and correct logic --- cmd/api/main.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/api/main.go b/cmd/api/main.go index c906e06f..6679739d 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -178,10 +178,10 @@ func checkLatestRelease() { return } if version.CheckSuggestedRelease(latest.SuggestedRelease) { + log.Info().Msgf("%s is up to date with the latest release (%s)", serviceName, buildVersion) + } else { log.Info().Msgf("A newer version of %s is available: %s (current: %s)", serviceName, latest.SuggestedRelease, buildVersion) log.Info().Msgf("Release notes: %s", latest.MoreInformation) - } else { - log.Info().Msgf("%s is up to date with the latest release (%s)", serviceName, buildVersion) } } @@ -586,8 +586,8 @@ func main() { } // Initialize service logger initializeLoggers(*flagParams.Service) - // Analyze version and compare with the latest release - checkLatestRelease() + // Analyze version and compare with the latest release, runs in a separate goroutine to not delay the service startup + go checkLatestRelease() // Run the service osctrlAPIService() return nil From 3eb8b9d7271b3ba98a6a87a4b5eda2f0a4a5f8f2 Mon Sep 17 00:00:00 2001 From: Javier Marcos <1271349+javuto@users.noreply.github.com> Date: Mon, 30 Mar 2026 22:33:23 +0200 Subject: [PATCH 3/3] Remove timeout message --- cmd/api/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/api/main.go b/cmd/api/main.go index 6679739d..bb57cfd3 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -171,7 +171,7 @@ func init() { // Retrieve latest release information and compare func checkLatestRelease() { - log.Info().Msg("Checking for the latest release... (timeout 10s)") + log.Info().Msg("Checking for the latest release...") latest, err := version.RetrieveVersionData(version.VersionDataURL) if err != nil { log.Err(err).Msg("Error retrieving latest release information")