From 3c2b415e535df6d9dd32690de4be2ed8e349fa11 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Tue, 28 Jan 2025 10:04:35 -0800 Subject: [PATCH] jobimpl-depsolve: Always return result Previously it would not return a result if there was an error. This adds a deferred function that always returns the current contents of result, and if there is an error it logs it. Related: RHEL-60125 --- cmd/osbuild-worker/jobimpl-depsolve.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/cmd/osbuild-worker/jobimpl-depsolve.go b/cmd/osbuild-worker/jobimpl-depsolve.go index 48e394c21..11577830b 100644 --- a/cmd/osbuild-worker/jobimpl-depsolve.go +++ b/cmd/osbuild-worker/jobimpl-depsolve.go @@ -127,14 +127,22 @@ func workerClientErrorFrom(err error, logWithId *logrus.Entry) *clienterrors.Err func (impl *DepsolveJobImpl) Run(job worker.Job) error { logWithId := logrus.WithField("jobId", job.Id()) + + var result worker.DepsolveJobResult + // ALWAYS return a result + defer func() { + err := job.Update(&result) + if err != nil { + logWithId.Errorf("Error reporting job result: %v", err) + } + }() + var args worker.DepsolveJob err := job.Args(&args) if err != nil { return err } - var result worker.DepsolveJobResult - if impl.RepositoryMTLSConfig != nil { for pkgsetsi, pkgsets := range args.PackageSets { for pkgseti, pkgset := range pkgsets { @@ -163,10 +171,7 @@ func (impl *DepsolveJobImpl) Run(job worker.Job) error { logWithId.Errorf("Error during rpm repo cache cleanup: %s", err.Error()) } - err = job.Update(&result) - if err != nil { - return fmt.Errorf("Error reporting job result: %v", err) - } + // NOTE: result is returned by deferred function above return nil }