VOL-3888: Provide resiliency for L2 PM Data
Change-Id: I38b6e5a25612b829e16feeaf6543a91cd63545d8
diff --git a/internal/pkg/onuadaptercore/openonu.go b/internal/pkg/onuadaptercore/openonu.go
index 357219b..eb1aaba 100644
--- a/internal/pkg/onuadaptercore/openonu.go
+++ b/internal/pkg/onuadaptercore/openonu.go
@@ -378,11 +378,23 @@
func (oo *OpenONUAC) Delete_device(ctx context.Context, device *voltha.Device) error {
logger.Infow(ctx, "delete-device", log.Fields{"device-id": device.Id, "SerialNumber": device.SerialNumber})
if handler := oo.getDeviceHandler(ctx, device.Id, false); handler != nil {
- err := handler.deleteDevicePersistencyData(ctx)
+ var errorsList []error
+ if err := handler.deleteDevicePersistencyData(ctx); err != nil {
+ errorsList = append(errorsList, err)
+ }
handler.stopCollector <- true // stop the metric collector routine
+ if handler.pOnuMetricsMgr != nil {
+ if err := handler.pOnuMetricsMgr.clearAllPmData(ctx); err != nil {
+ errorsList = append(errorsList, err)
+ }
+ }
//don't leave any garbage - even in error case
oo.deleteDeviceHandlerToMap(handler)
- return err
+ if len(errorsList) > 0 {
+ logger.Errorw(ctx, "one-or-more-error-during-device-delete", log.Fields{"device-id": device.Id})
+ return fmt.Errorf("one-or-more-error-during-device-delete, errors:%v", errorsList)
+ }
+ return nil
}
logger.Warnw(ctx, "no handler found for device-deletion", log.Fields{"device-id": device.Id})
return fmt.Errorf(fmt.Sprintf("handler-not-found-%s", device.Id))