VOL-3065: Concurrent metrics context map access causing panic

Change-Id: I4c949a9df36c16e80a83cc4e19de382cd4648aec
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index d6cb1e6..ff3aac8 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -764,7 +764,6 @@
 
 func startCollector(dh *DeviceHandler) {
 	logger.Debugf("starting-collector")
-	context := make(map[string]string)
 	freq := dh.metrics.ToPmConfigs().DefaultFreq
 	for {
 		select {
@@ -772,18 +771,16 @@
 			logger.Debugw("stopping-collector-for-olt", log.Fields{"deviceID:": dh.device.Id})
 			return
 		case <-time.After(time.Duration(freq) * time.Second):
-			context["oltid"] = dh.device.Id
-			context["devicetype"] = dh.device.Type
+
 			ports := make([]*voltha.Port, len(dh.device.Ports))
 			copy(ports, dh.device.Ports)
-
 			for _, port := range ports {
 				// NNI Stats
 				if port.Type == voltha.Port_ETHERNET_NNI {
 					intfID := PortNoToIntfID(port.PortNo, voltha.Port_ETHERNET_NNI)
 					cmnni := dh.portStats.collectNNIMetrics(intfID)
 					logger.Debugw("collect-nni-metrics", log.Fields{"metrics": cmnni})
-					go dh.portStats.publishMetrics(cmnni, port, context, dh.device.Id)
+					go dh.portStats.publishMetrics(cmnni, port, dh.device.Id, dh.device.Type)
 					logger.Debugw("publish-nni-metrics", log.Fields{"nni-port": port.Label})
 				}
 				// PON Stats
@@ -792,7 +789,7 @@
 					if val, ok := dh.activePorts.Load(intfID); ok && val == true {
 						cmpon := dh.portStats.collectPONMetrics(intfID)
 						logger.Debugw("collect-pon-metrics", log.Fields{"metrics": cmpon})
-						go dh.portStats.publishMetrics(cmpon, port, context, dh.device.Id)
+						go dh.portStats.publishMetrics(cmpon, port, dh.device.Id, dh.device.Type)
 					}
 					logger.Debugw("publish-pon-metrics", log.Fields{"pon-port": port.Label})
 				}