VOL-3065: Concurrent metrics context map access causing panic

Change-Id: I4c949a9df36c16e80a83cc4e19de382cd4648aec
diff --git a/internal/pkg/core/statsmanager.go b/internal/pkg/core/statsmanager.go
index 5d742d0..0cb148d 100755
--- a/internal/pkg/core/statsmanager.go
+++ b/internal/pkg/core/statsmanager.go
@@ -351,14 +351,17 @@
 
 // publishMatrics will publish the pon port metrics
 func (StatMgr OpenOltStatisticsMgr) publishMetrics(val map[string]float32,
-	port *voltha.Port, context map[string]string, devID string) {
+	port *voltha.Port, devID string, devType string) {
 	logger.Debugw("publish-metrics", log.Fields{"port": port.Label, "metrics": val})
 
 	var metricInfo voltha.MetricInformation
 	var ke voltha.KpiEvent2
 	var volthaEventSubCatgry voltha.EventSubCategory_Types
-	context["portlabel"] = port.Label
-	context["portno"] = strconv.Itoa(int(port.PortNo))
+	metricsContext := make(map[string]string)
+	metricsContext["oltid"] = devID
+	metricsContext["devicetype"] = devType
+	metricsContext["portlabel"] = port.Label
+	metricsContext["portno"] = strconv.Itoa(int(port.PortNo))
 
 	if port.Type == voltha.Port_ETHERNET_NNI {
 		volthaEventSubCatgry = voltha.EventSubCategory_NNI
@@ -370,7 +373,7 @@
 	mmd := voltha.MetricMetaData{
 		Title:    port.Type.String(),
 		Ts:       float64(raisedTs),
-		Context:  context,
+		Context:  metricsContext,
 		DeviceId: devID,
 	}