[VOL-5546]:Handle RPC unavailable cases during onu discovery
Change-Id: I423e80c693755a246ff6c3e5753432dcc3d0ff71
Signed-off-by: balaji.nagarajan <balaji.nagarajan@radisys.com>
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index d7ea844..695e92e 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -1854,11 +1854,22 @@
// CheckOnuDevExistenceAtOnuDiscovery if true , a check will be made for the existence of the onu device. If the onu device
// still exists , the onu discovery will be ignored, else a check for active techprofiles for ONU is checked.
if dh.openOLT.CheckOnuDevExistenceAtOnuDiscovery {
- onuDevice, _ := dh.getChildDeviceFromCore(ctx, &ca.ChildDeviceFilter{
+ onuDevice, err := dh.getChildDeviceFromCore(ctx, &ca.ChildDeviceFilter{
ParentId: dh.device.Id,
SerialNumber: sn,
ParentPortNo: parentPortNo,
})
+ if err != nil {
+ if e, ok := status.FromError(err); ok {
+ switch e.Code() {
+ case codes.NotFound:
+ return false, nil
+ default:
+ logger.Errorw(ctx, "Unexpected error code while fetching device from core", log.Fields{"sn": sn, "error": err})
+ return false, err
+ }
+ }
+ }
if onuDevice != nil {
logger.Infow(ctx, "Child device still present ignoring discovery indication", log.Fields{"sn": sn})
return true, nil
@@ -1995,7 +2006,7 @@
if e, ok := status.FromError(error); ok {
logger.Debugw(ctx, "core-proxy-get-child-device-failed-with-code", log.Fields{"errCode": e.Code(), "sn": sn})
switch e.Code() {
- case codes.Internal:
+ case codes.Internal, codes.NotFound:
// this probably means NOT FOUND, so just create a new device
onuDevice = nil
case codes.DeadlineExceeded:
@@ -2003,6 +2014,11 @@
dh.discOnus.Delete(sn)
error = olterrors.NewErrTimeout("get-child-device", log.Fields{"device-id": dh.device.Id}, error)
return error
+ default:
+ //any other rpc errors
+ dh.discOnus.Delete(sn)
+ error = olterrors.NewErrAdapter("unexpected error code while fetching device from core", log.Fields{"device-id": dh.device.Id, "sn": sn}, error)
+ return error
}
}
}