[VOL-4559] Disable ONU device: TPs are deleted incompletely in TT multi-UNI scenario

Change-Id: If48bfc7c84e4682417e75f2b005dea73be7bc549
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 332f776..58d42b1 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -498,7 +498,7 @@
 }
 
 func (dh *deviceHandler) handleDeleteTcontRequest(ctx context.Context, delTcontMsg *ia.DeleteTcontMessage) error {
-	logger.Infow(ctx, "delete-tcont-request start", log.Fields{"device-id": dh.DeviceID})
+	logger.Infow(ctx, "delete-tcont-request start", log.Fields{"device-id": dh.DeviceID, "uni-id": delTcontMsg.UniId, "tcont": delTcontMsg.AllocId})
 
 	pDevEntry := dh.GetOnuDeviceEntry(ctx, true)
 	if pDevEntry == nil {
@@ -530,10 +530,20 @@
 			"device-id": dh.DeviceID, "err": err, "tp-path": tpPath})
 		return err
 	}
-	logger.Infow(ctx, "delete-tcont-request", log.Fields{"device-id": dh.DeviceID, "uni-id": uniID, "tpID": tpID, "tcont": delTcontMsg.AllocId})
-
 	pDevEntry.FreeTcont(ctx, uint16(delTcontMsg.AllocId))
 
+	var wg sync.WaitGroup
+	deadline := time.Now().Add(dh.pOpenOnuAc.maxTimeoutInterAdapterComm) //allowed run time to finish before execution
+	dctx, cancel := context.WithDeadline(context.Background(), deadline)
+	wg.Add(1)
+	logger.Debugw(ctx, "remove-tcont-in-kv", log.Fields{"device-id": dh.DeviceID, "uni-id": uniID, "tpID": tpID, "tcont": delTcontMsg.AllocId})
+	go pDevEntry.UpdateOnuKvStore(log.WithSpanFromContext(dctx, ctx), &wg)
+	dh.waitForCompletion(ctx, cancel, &wg, "DeleteTcont") //wait for background process to finish
+	if err := pDevEntry.GetKvProcessingErrorIndication(); err != nil {
+		logger.Errorw(ctx, err.Error(), log.Fields{"device-id": dh.DeviceID})
+		return err
+	}
+
 	return dh.deleteTechProfileResource(ctx, uniID, tpID, delTcontMsg.TpInstancePath,
 		avcfg.CResourceTcont, delTcontMsg.AllocId)
 
@@ -577,7 +587,7 @@
 			dctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
 			wg2.Add(1)
 			// Removal of the gem id mapping represents the removal of the tech profile
-			logger.Infow(ctx, "remove-techProfile-indication-in-kv", log.Fields{"device-id": dh.DeviceID, "uni-id": uniID, "tpID": tpID})
+			logger.Debugw(ctx, "remove-techProfile-indication-in-kv", log.Fields{"device-id": dh.DeviceID, "uni-id": uniID, "tpID": tpID})
 			go pDevEntry.UpdateOnuKvStore(log.WithSpanFromContext(dctx2, ctx), &wg2)
 			dh.waitForCompletion(ctx, cancel2, &wg2, "TechProfileDeleteOn"+resourceName) //wait for background process to finish
 			if err := pDevEntry.GetKvProcessingErrorIndication(); err != nil {