summaryrefslogtreecommitdiff
path: root/cloud
diff options
context:
space:
mode:
authorKubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com>2024-01-04 17:59:16 +0800
committerGitHub <noreply@github.com>2024-01-04 17:59:16 +0800
commit99026eb4e7142a16b572c7e53f895f0a44245bb0 (patch)
tree11b7d68329108498c34cfef20f4ebd230fc212a1 /cloud
parentMerge pull request #5325 from wbc6080/fix-localup-script (diff)
parentAdd a retry mechanism to solve situations where the device is deployed before... (diff)
downloadkubeedge-99026eb4e7142a16b572c7e53f895f0a44245bb0.tar.gz
Merge pull request #5303 from luomengY/deviceandmodelorder
Add a retry mechanism to solve situations where the device is deployed before the devicemodel.
Diffstat (limited to 'cloud')
-rw-r--r--cloud/pkg/devicecontroller/controller/downstream.go21
1 files changed, 18 insertions, 3 deletions
diff --git a/cloud/pkg/devicecontroller/controller/downstream.go b/cloud/pkg/devicecontroller/controller/downstream.go
index 43793fddd..107787048 100644
--- a/cloud/pkg/devicecontroller/controller/downstream.go
+++ b/cloud/pkg/devicecontroller/controller/downstream.go
@@ -17,10 +17,12 @@ limitations under the License.
package controller
import (
+ "fmt"
"reflect"
"sync"
"time"
+ "github.com/avast/retry-go"
"github.com/google/uuid"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/watch"
@@ -308,9 +310,22 @@ func (dc *DownstreamController) sendDeviceModelMsg(device *v1beta1.Device, opera
if device == nil || device.Spec.DeviceModelRef == nil {
return
}
- edgeDeviceModel, ok := dc.deviceModelManager.DeviceModel.Load(device.Spec.DeviceModelRef.Name)
- if !ok {
- klog.Warningf("not found device model for device: %s, operation: %s", device.Name, operation)
+ var edgeDeviceModel any
+ var ok bool
+ err := retry.Do(
+ func() error {
+ edgeDeviceModel, ok = dc.deviceModelManager.DeviceModel.Load(device.Spec.DeviceModelRef.Name)
+ if !ok {
+ return fmt.Errorf("not found device model for device: %s, operation: %s", device.Name, operation)
+ }
+ return nil
+ },
+ retry.Delay(1*time.Second),
+ retry.Attempts(10),
+ retry.DelayType(retry.FixedDelay),
+ )
+ if err != nil {
+ klog.Warningf(err.Error())
return
}