[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)
 	}
 }