[VOL-3891] Avoid runtime error due to null instruction, adding also logs for further debugging

Change-Id: Ibec27f73a7b4dc50422864761609ca4404e4ef9b
diff --git a/internal/pkg/openflow/stats.go b/internal/pkg/openflow/stats.go
index ccf7d7d..1cd656e 100644
--- a/internal/pkg/openflow/stats.go
+++ b/internal/pkg/openflow/stats.go
@@ -343,6 +343,7 @@
 	if err != nil {
 		return nil, err
 	}
+	logger.Debugw(ctx, "logicalDeviceFlows", log.Fields{"flows": resp})
 	var flows []*ofp.FlowStatsEntry
 	for _, item := range resp.GetItems() {
 		entry := ofp.NewFlowStatsEntry()
@@ -363,16 +364,24 @@
 		for _, oxmField := range pbMatch.GetOxmFields() {
 			field := oxmField.GetField()
 			ofbField := field.(*openflow_13.OfpOxmField_OfbField).OfbField
-			iOxm := parseOxm(ctx, ofbField)
-			fields = append(fields, iOxm)
+			iOxm, err := parseOxm(ctx, ofbField)
+			if err == nil {
+				fields = append(fields, iOxm)
+			} else {
+				logger.Errorw(ctx, "error-parsing-oxm", log.Fields{"err": err})
+			}
 		}
 
 		match.OxmList = fields
 		entry.SetMatch(*match)
 		var instructions []ofp.IInstruction
 		for _, ofpInstruction := range item.Instructions {
-			instruction := parseInstructions(ctx, ofpInstruction)
-			instructions = append(instructions, instruction)
+			instruction, err := parseInstructions(ctx, ofpInstruction)
+			if err == nil {
+				instructions = append(instructions, instruction)
+			} else {
+				logger.Errorw(ctx, "error-parsing-instruction", log.Fields{"err": err})
+			}
 		}
 		entry.Instructions = instructions
 		flows = append(flows, entry)
@@ -475,7 +484,10 @@
 	for _, item := range reply.GetItems() {
 		desc := item.GetDesc()
 
-		buckets := volthaBucketsToOpenflow(ctx, desc.Buckets)
+		buckets, err := volthaBucketsToOpenflow(ctx, desc.Buckets)
+		if err != nil {
+			return nil, err
+		}
 
 		groupDesc := &ofp.GroupDescStatsEntry{
 			GroupType: volthaGroupTypeToOpenflow(ctx, desc.Type),