From f7f7a90a88d06edb9a86f97c08dcc9e60e86b4e7 Mon Sep 17 00:00:00 2001 From: lucarin91 Date: Tue, 16 Dec 2025 10:14:39 +0100 Subject: [PATCH 1/2] fix(update): always try to restart the app-cli daemon --- internal/update/apt/service.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/internal/update/apt/service.go b/internal/update/apt/service.go index 860be68f..e1815f54 100644 --- a/internal/update/apt/service.go +++ b/internal/update/apt/service.go @@ -83,6 +83,17 @@ func (s *Service) UpgradePackages(ctx context.Context, names []string) (<-chan u defer s.lock.Unlock() defer close(eventsCh) + // We try anyway to restart the service. + defer func() { + eventsCh <- update.NewDataEvent(update.RestartEvent, "Upgrade completed. Restarting ...") + + err := restartServices(ctx) + if err != nil { + eventsCh <- update.NewErrorEvent(fmt.Errorf("error restarting services after upgrade: %w", err)) + return + } + }() + eventsCh <- update.NewDataEvent(update.StartEvent, "Upgrade is starting") stream := runUpgradeCommand(ctx, names) for line, err := range stream { @@ -127,13 +138,6 @@ func (s *Service) UpgradePackages(ctx context.Context, names []string) (<-chan u } eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, line) } - eventsCh <- update.NewDataEvent(update.RestartEvent, "Upgrade completed. Restarting ...") - - err := restartServices(ctx) - if err != nil { - eventsCh <- update.NewErrorEvent(fmt.Errorf("error restarting services after upgrade: %w", err)) - return - } }() return eventsCh, nil From 84a2e723d8fae83610a0d4e9f135e67916b40785 Mon Sep 17 00:00:00 2001 From: Luca Rinaldi Date: Tue, 16 Dec 2025 11:41:55 +0100 Subject: [PATCH 2/2] Update internal/update/apt/service.go Co-authored-by: Alby <30591904+Xayton@users.noreply.github.com> --- internal/update/apt/service.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/update/apt/service.go b/internal/update/apt/service.go index e1815f54..3c00c570 100644 --- a/internal/update/apt/service.go +++ b/internal/update/apt/service.go @@ -83,7 +83,8 @@ func (s *Service) UpgradePackages(ctx context.Context, names []string) (<-chan u defer s.lock.Unlock() defer close(eventsCh) - // We try anyway to restart the service. + // At the end of the upgrade, always try to restart the services (that need it). + // This makes sure key services are restarted even if an error happens in the upgrade steps (for examples container images download). defer func() { eventsCh <- update.NewDataEvent(update.RestartEvent, "Upgrade completed. Restarting ...")