VOL-3049 Final review comments addressed for alarm notifications
Change-Id: Id3fedd89c3b347e14719e597c6f7b93938567eee
diff --git a/internal/pkg/onuadaptercore/device_handler.go b/internal/pkg/onuadaptercore/device_handler.go
index 91f9a8d..c452fe5 100644
--- a/internal/pkg/onuadaptercore/device_handler.go
+++ b/internal/pkg/onuadaptercore/device_handler.go
@@ -198,6 +198,8 @@
collectorIsRunning bool
mutexCollectorFlag sync.RWMutex
stopCollector chan bool
+ alarmManagerIsRunning bool
+ mutextAlarmManagerFlag sync.RWMutex
stopAlarmManager chan bool
stopHeartbeatCheck chan bool
uniEntityMap map[uint32]*onuUniPort
@@ -226,6 +228,7 @@
dh.deviceEntrySet = make(chan bool, 1)
dh.collectorIsRunning = false
dh.stopCollector = make(chan bool, 2)
+ dh.alarmManagerIsRunning = false
dh.stopAlarmManager = make(chan bool, 2)
dh.stopHeartbeatCheck = make(chan bool, 2)
//dh.metrics = pmmetrics.NewPmMetrics(cloned.Id, pmmetrics.Frequency(150), pmmetrics.FrequencyOverride(false), pmmetrics.Grouped(false), pmmetrics.Metrics(pmNames))
@@ -1465,7 +1468,9 @@
// Start PM collector routine
go dh.startCollector(ctx)
}
- go dh.startAlarmManager(ctx)
+ if !dh.getAlarmManagerIsRunning() {
+ go dh.startAlarmManager(ctx)
+ }
return nil
}
@@ -1591,7 +1596,10 @@
// Stop collector routine
dh.stopCollector <- true
}
- dh.stopAlarmManager <- true
+ if dh.getAlarmManagerIsRunning() {
+ dh.stopAlarmManager <- true
+ }
+
return nil
}
@@ -2857,6 +2865,9 @@
// Start PM collector routine
go dh.startCollector(ctx)
}
+ if !dh.getAlarmManagerIsRunning() {
+ go dh.startAlarmManager(ctx)
+ }
dh.uniEntityMap = make(map[uint32]*onuUniPort)
dh.startReconciling(ctx)
}
@@ -2874,14 +2885,30 @@
return flagValue
}
+func (dh *deviceHandler) setAlarmManagerIsRunning(flagValue bool) {
+ dh.mutextAlarmManagerFlag.Lock()
+ dh.alarmManagerIsRunning = flagValue
+ dh.mutextAlarmManagerFlag.Unlock()
+}
+
+func (dh *deviceHandler) getAlarmManagerIsRunning() bool {
+ dh.mutextAlarmManagerFlag.RLock()
+ flagValue := dh.alarmManagerIsRunning
+ dh.mutextAlarmManagerFlag.RUnlock()
+ return flagValue
+}
+
func (dh *deviceHandler) startAlarmManager(ctx context.Context) {
logger.Debugf(ctx, "startingAlarmManager")
// Start routine to process OMCI GET Responses
go dh.pAlarmMgr.startOMCIAlarmMessageProcessing(ctx)
+ dh.setAlarmManagerIsRunning(true)
if stop := <-dh.stopAlarmManager; stop {
logger.Debugw(ctx, "stopping-collector-for-onu", log.Fields{"device-id": dh.device.Id})
dh.pAlarmMgr.stopProcessingOmciMessages <- true // Stop the OMCI routines if any
+ dh.setAlarmManagerIsRunning(false)
+
}
}
func (dh *deviceHandler) startReconciling(ctx context.Context) {