If getAppContextStatus fails, cancel waitForDone 38/113138/2
authorIgor D.C <igor.duarte.cardoso@intel.com>
Thu, 24 Sep 2020 22:01:35 +0000 (22:01 +0000)
committerIgor D.C <igor.duarte.cardoso@intel.com>
Fri, 25 Sep 2020 05:31:13 +0000 (05:31 +0000)
And log error appropriately.

Essentially, add basic error handling and return from waitForDone.

It is possible to trigger this error easily by having an rsync client
wipe out etcd right after issuing an InvokeUninstallApp, as demonstrated
by DCM (before it was adapted to use the new asynchronous rsync).

Issue-ID: MULTICLOUD-1143
Change-Id: Id5c0d8da928738cb3cdc862eaefdb91db2eadf5f
Signed-off-by: Igor D.C <igor.duarte.cardoso@intel.com>
src/rsync/pkg/context/context.go

index 4b886ec..35e6c4e 100644 (file)
@@ -536,7 +536,13 @@ func waitForDone(ac appcontext.AppContext) {
                        logutils.Info("Wait for done watcher running..", logutils.Fields{})
                        count = 0
                }
-               acStatus, _ := getAppContextStatus(ac)
+               acStatus, err := getAppContextStatus(ac)
+               if err != nil {
+                       logutils.Error("Failed to get the app context status", logutils.Fields{
+                               "error": err,
+                       })
+                       return
+               }
                if acStatus.Status == appcontext.AppContextStatusEnum.Instantiated ||
                        acStatus.Status == appcontext.AppContextStatusEnum.InstantiateFailed {
                        return