From 8b69566291e602d269d8de8370d87c60c657e370 Mon Sep 17 00:00:00 2001 From: Frederik Ring Date: Mon, 15 Apr 2024 15:08:37 +0200 Subject: [PATCH] Result of query for services is used before handling possible error (#405) * Result of query for services is used before handling possible error * Return early when a non-replicated service is matched --- cmd/backup/stop_restart.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cmd/backup/stop_restart.go b/cmd/backup/stop_restart.go index 7fc558c..32191cb 100644 --- a/cmd/backup/stop_restart.go +++ b/cmd/backup/stop_restart.go @@ -151,15 +151,21 @@ func (s *script) stopContainersAndServices() (func() error, error) { }), Status: true, }) + if err != nil { + return noop, errwrap.Wrap(err, "error querying for services to scale down") + } for _, s := range matchingServices { + if s.Spec.Mode.Replicated == nil { + return noop, errwrap.Wrap( + nil, + fmt.Sprintf("only replicated services can be restarted, but found a label on service %s", s.Spec.Name), + ) + } servicesToScaleDown = append(servicesToScaleDown, handledSwarmService{ serviceID: s.ID, initialReplicaCount: *s.Spec.Mode.Replicated.Replicas, }) } - if err != nil { - return noop, errwrap.Wrap(err, "error querying for services to scale down") - } } if len(containersToStop) == 0 && len(servicesToScaleDown) == 0 {