diff options
| author | KubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com> | 2024-01-04 17:59:16 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-04 17:59:16 +0800 |
| commit | 99026eb4e7142a16b572c7e53f895f0a44245bb0 (patch) | |
| tree | 11b7d68329108498c34cfef20f4ebd230fc212a1 /cloud | |
| parent | Merge pull request #5325 from wbc6080/fix-localup-script (diff) | |
| parent | Add a retry mechanism to solve situations where the device is deployed before... (diff) | |
| download | kubeedge-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.go | 21 |
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 } |
