Fix go sync null pointer bug 69/4369/1
authorLe Yao <le.yao@intel.com>
Fri, 9 Jul 2021 05:50:17 +0000 (05:50 +0000)
committerLe Yao <le.yao@intel.com>
Fri, 9 Jul 2021 05:50:53 +0000 (05:50 +0000)
Signed-off-by: Le Yao <le.yao@intel.com>
Change-Id: I6e422a502be3ab10786cc72df9e363625d9c209f

platform/crd-ctrlr/src/controllers/cnfstatus_controller.go

index f1f5ad5..4a66cae 100644 (file)
@@ -174,16 +174,20 @@ func (r *SdewanCNFStatusController) query() {
                } else {
                        // ececute registered actions
                        r.mux.Lock()
-                       for _, cs := range *cnf_status {
-                               if r.actions[cs.Name] != nil {
-                                       go func() {
-                                               err := r.actions[cs.Name].Execute(clientInfo, cs.Status)
+                       var wg sync.WaitGroup
+                       for i, _ := range *cnf_status {
+                               if r.actions[(*cnf_status)[i].Name] != nil {
+                                       wg.Add(1)
+                                       go func(index int) {
+                                               defer wg.Done()
+                                               err := r.actions[(*cnf_status)[index].Name].Execute(clientInfo, (*cnf_status)[index].Status)
                                                if err != nil {
                                                        r.Log.Info(err.Error())
                                                }
-                                       }()
+                                       }(i)
                                }
                        }
+                       wg.Wait()
                        r.mux.Unlock()
 
                        p_data, _ := json.Marshal(cnf_status)