summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor D.C <igor.duarte.cardoso@intel.com>2020-09-24 22:01:35 +0000
committerIgor D.C <igor.duarte.cardoso@intel.com>2020-09-25 05:31:13 +0000
commit6498e883dcbc005b32f86f8a57c96950c359d98e (patch)
treea136c1f715efc6f4ba0afb11e5996fd5ad47c72f
parentab8142dfc0f54bfc140e240fe558ac5be8d60ea5 (diff)
If getAppContextStatus fails, cancel waitForDone
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>
-rw-r--r--src/rsync/pkg/context/context.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/rsync/pkg/context/context.go b/src/rsync/pkg/context/context.go
index 4b886ec7..35e6c4e2 100644
--- a/src/rsync/pkg/context/context.go
+++ b/src/rsync/pkg/context/context.go
@@ -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