[VOL-4445] Correct error type to proceed with deletion with half route

ALso moving deletion of logical device and meters to correct place in transitions.go

Change-Id: I91242ae9611792a1aeb7ac9ebd6116a5fe820392
diff --git a/rw_core/core/device/logical_manager.go b/rw_core/core/device/logical_manager.go
index 7ed5f8c..e663632 100644
--- a/rw_core/core/device/logical_manager.go
+++ b/rw_core/core/device/logical_manager.go
@@ -104,6 +104,7 @@
 }
 
 func (ldMgr *LogicalManager) deleteLogicalDeviceAgent(logicalDeviceID string) {
+	logger.Debugw(context.Background(), "delete-logical-device-agent", log.Fields{"logical-device-id": logicalDeviceID})
 	ldMgr.logicalDeviceAgents.Delete(logicalDeviceID)
 }
 
@@ -272,6 +273,10 @@
 		return errors.New("device-not-root")
 	}
 	logDeviceID := device.ParentId
+	if err := ldMgr.deleteAllLogicalMeters(ctx, logDeviceID); err != nil {
+		// Just log the error.   The logical device or port may already have been deleted before this callback is invoked.
+		logger.Warnw(ctx, "delete-logical-meters-error", log.Fields{"device-id": logDeviceID, "error": err})
+	}
 	if agent := ldMgr.getLogicalDeviceAgent(ctx, logDeviceID); agent != nil {
 		// Stop the logical device agent
 		if err := agent.stop(ctx); err != nil {
@@ -280,6 +285,8 @@
 		}
 		//Remove the logical device agent from the Map
 		ldMgr.deleteLogicalDeviceAgent(logDeviceID)
+	} else {
+		logger.Warnw(ctx, "no-logical-device-agent-on-deletion", log.Fields{"device-id": logDeviceID})
 	}
 
 	logger.Debug(ctx, "deleting-logical-device-ends")