PMs are missing because OMCI processor has not started before PM FSM.
Wait for OMCI processor in PM module to start before starting PM FSM.
Change-Id: I10707d8626f1c11f97946307fa7343dcab7b4fb5
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 6465a0c..03b6ab3 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -2382,8 +2382,11 @@
_ = dh.ReasonUpdate(ctx, cmn.DrInitialMibDownloaded, !dh.IsReconciling() || dh.IsReconcilingReasonUpdate())
if !dh.GetCollectorIsRunning() {
+ var waitForOmciProcessor sync.WaitGroup
+ waitForOmciProcessor.Add(1)
// Start PM collector routine
- go dh.StartCollector(ctx)
+ go dh.StartCollector(ctx, &waitForOmciProcessor)
+ waitForOmciProcessor.Wait()
}
if !dh.GetAlarmManagerIsRunning(ctx) {
go dh.StartAlarmManager(ctx)
@@ -3702,11 +3705,11 @@
}
// nolint: gocyclo
-func (dh *deviceHandler) StartCollector(ctx context.Context) {
+func (dh *deviceHandler) StartCollector(ctx context.Context, waitForOmciProcessor *sync.WaitGroup) {
logger.Debugw(ctx, "startingCollector", log.Fields{"device-id": dh.device.Id})
// Start routine to process OMCI GET Responses
- go dh.pOnuMetricsMgr.ProcessOmciMessages(ctx)
+ go dh.pOnuMetricsMgr.ProcessOmciMessages(ctx, waitForOmciProcessor)
// Create Extended Frame PM ME
go dh.pOnuMetricsMgr.CreateEthernetFrameExtendedPMME(ctx)
// Initialize the next metric collection time.