Check processOmciMessages and generateTicks routines are active before
closing respective channels (stopProcessingOmciResponses and stopTicks).

Change-Id: Iaaab422f175f634d36d3ec095b8802c3c1c2634e
diff --git a/internal/pkg/onuadaptercore/device_handler.go b/internal/pkg/onuadaptercore/device_handler.go
index 0f067d0..ac04031 100644
--- a/internal/pkg/onuadaptercore/device_handler.go
+++ b/internal/pkg/onuadaptercore/device_handler.go
@@ -1810,6 +1810,14 @@
 	}
 	_ = dh.deviceReasonUpdate(ctx, drInitialMibDownloaded, !dh.isReconciling())
 
+	if !dh.getCollectorIsRunning() {
+		// Start PM collector routine
+		go dh.startCollector(ctx)
+	}
+	if !dh.getAlarmManagerIsRunning(ctx) {
+		go dh.startAlarmManager(ctx)
+	}
+
 	// Initialize classical L2 PM Interval Counters
 	if err := dh.pOnuMetricsMgr.pAdaptFsm.pFsm.Event(l2PmEventInit); err != nil {
 		// There is no way we should be landing here, but if we do then
@@ -2961,9 +2969,12 @@
 					logger.Errorw(ctx, "metrics manager fsm not initialized", log.Fields{"device-id": dh.deviceID})
 				}
 			}()
-
-			dh.pOnuMetricsMgr.stopProcessingOmciResponses <- true // Stop the OMCI GET response processing routine
-			dh.pOnuMetricsMgr.stopTicks <- true
+			if dh.pOnuMetricsMgr.getOmciProcessingStatus() {
+				dh.pOnuMetricsMgr.stopProcessingOmciResponses <- true // Stop the OMCI GET response processing routine
+			}
+			if dh.pOnuMetricsMgr.getTickGenerationStatus() {
+				dh.pOnuMetricsMgr.stopTicks <- true
+			}
 
 			return
 		case <-time.After(time.Duration(FrequencyGranularity) * time.Second): // Check every FrequencyGranularity to see if it is time for collecting metrics