[VOL-4548] openonuAdapterGo - memory leak seen in long term tests
Change-Id: I306e3b8d9529ba1ffb43f93cd70524931d7c5e3c
diff --git a/internal/pkg/onuadaptercore/mib_sync.go b/internal/pkg/onuadaptercore/mib_sync.go
index 208d8cd..3439375 100644
--- a/internal/pkg/onuadaptercore/mib_sync.go
+++ b/internal/pkg/onuadaptercore/mib_sync.go
@@ -418,6 +418,10 @@
switch message.Type {
case TestMsg:
msg, _ := message.Data.(TestMessage)
+ if msg.TestMessageVal == AbortMessageProcessing {
+ logger.Debugw(ctx, "MibSync Msg abort ProcessMsg", log.Fields{"for device-id": oo.deviceID})
+ break loop
+ }
oo.handleTestMsg(ctx, msg)
case OMCI:
msg, _ := message.Data.(OmciMessage)
@@ -1103,8 +1107,16 @@
}
//the MibSync FSM might be active all the ONU-active time,
// hence it must be stopped unconditionally
- pMibUlFsm := oo.pMibUploadFsm.pFsm
+ pMibUlFsm := oo.pMibUploadFsm
if pMibUlFsm != nil {
- _ = pMibUlFsm.Event(ulEvStop)
+ // abort running message processing
+ fsmAbortMsg := Message{
+ Type: TestMsg,
+ Data: TestMessage{
+ TestMessageVal: AbortMessageProcessing,
+ },
+ }
+ pMibUlFsm.commChan <- fsmAbortMsg
+ _ = pMibUlFsm.pFsm.Event(ulEvStop)
}
}