Ignore unknown subobjects while parsing RRO/ERO objects in PCEP messages 30/87030/4
authorAjay Lele <ajayslele@gmail.com>
Fri, 17 Jan 2020 18:18:40 +0000 (10:18 -0800)
committerRobert Varga <nite@hq.sk>
Tue, 4 Feb 2020 07:57:27 +0000 (07:57 +0000)
Make handling of unknown subobjects more liberal. Log message parsing
exceptions at error level instead of debug to make it easier to detect.

JIRA: BGPCEP-892
Change-Id: I3d142e3d857b1ee154aaedf3d28a09d870932915
Signed-off-by: Ajay Lele <ajayslele@gmail.com>
pcep/base-parser/src/main/java/org/opendaylight/protocol/pcep/parser/object/AbstractEROWithSubobjectsParser.java
pcep/base-parser/src/main/java/org/opendaylight/protocol/pcep/parser/object/AbstractRROWithSubobjectsParser.java
pcep/base-parser/src/main/java/org/opendaylight/protocol/pcep/parser/object/AbstractXROWithSubobjectsParser.java
pcep/base-parser/src/main/java/org/opendaylight/protocol/pcep/parser/subobject/EROLabelSubobjectParser.java
pcep/base-parser/src/main/java/org/opendaylight/protocol/pcep/parser/subobject/RROLabelSubobjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPByteToMessageDecoder.java
rsvp/impl/src/main/java/org/opendaylight/protocol/rsvp/parser/impl/subobject/ero/EROLabelSubobjectParser.java
rsvp/impl/src/main/java/org/opendaylight/protocol/rsvp/parser/impl/subobject/rro/RROLabelSubobjectParser.java
rsvp/spi/src/main/java/org/opendaylight/protocol/rsvp/parser/spi/subobjects/EROSubobjectListParser.java
rsvp/spi/src/main/java/org/opendaylight/protocol/rsvp/parser/spi/subobjects/RROSubobjectListParser.java
rsvp/spi/src/main/java/org/opendaylight/protocol/rsvp/parser/spi/subobjects/XROSubobjectListParser.java

index fda09f91d19efe82a9c295515cc5e1c26cb55c30..e3fdcdae8c316a6ce59ea3fc0c548dd0fd1788a7 100644 (file)
@@ -55,7 +55,7 @@ public abstract class AbstractEROWithSubobjectsParser extends CommonObjectParser
             LOG.debug("Attempt to parse subobject from bytes: {}", ByteBufUtil.hexDump(buffer));
             final Subobject sub = this.subobjReg.parseSubobject(type, buffer.readSlice(length), loose);
             if (sub == null) {
-                LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
+                LOG.warn("Parsing failed for subobject type: {}. Ignoring subobject.", type);
             } else {
                 LOG.debug("Subobject was parsed. {}", sub);
                 subs.add(sub);
index ff783fa388ecd2d25af07fb5823d5b64877e9358..e3ea391477b1d7984d51e227ef4211e005a1cc46 100644 (file)
@@ -50,7 +50,7 @@ public abstract class AbstractRROWithSubobjectsParser extends CommonObjectParser
             LOG.debug("Attempt to parse subobject from bytes: {}", ByteBufUtil.hexDump(buffer));
             final Subobject sub = this.subobjReg.parseSubobject(type, buffer.readSlice(length));
             if (sub == null) {
-                LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
+                LOG.warn("Parsing failed for subobject type: {}. Ignoring subobject.", type);
             } else {
                 LOG.debug("Subobject was parsed. {}", sub);
                 subs.add(sub);
index 0f7ca2a2398cd79063bf67d2381e702675f76c2e..bd23431ddebf0751cb7b86f3a2f47fc2355191cc 100644 (file)
@@ -55,7 +55,7 @@ public abstract class AbstractXROWithSubobjectsParser extends CommonObjectParser
             LOG.debug("Attempt to parse subobject from bytes: {}", ByteBufUtil.hexDump(buffer));
             final Subobject sub = this.subobjReg.parseSubobject(type, buffer.readSlice(length), mandatory);
             if (sub == null) {
-                LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
+                LOG.warn("Parsing failed for subobject type: {}. Ignoring subobject.", type);
             } else {
                 LOG.debug("Subobject was parsed. {}", sub);
                 subs.add(sub);
index 8b8a4896c1f7f17718c736fe8ed21a85fdf267c4..3a0f1a20a6d98019eb6f537337ec458164987c21 100644 (file)
@@ -25,8 +25,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.label._case.Label;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.label._case.LabelBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.LabelType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class EROLabelSubobjectParser implements EROSubobjectParser, EROSubobjectSerializer {
+    private static final Logger LOG = LoggerFactory.getLogger(EROLabelSubobjectParser.class);
 
     public static final int TYPE = 3;
 
@@ -59,7 +62,8 @@ public class EROLabelSubobjectParser implements EROSubobjectParser, EROSubobject
 
         final LabelType labelType = this.registry.parseLabel(cType, buffer.slice());
         if (labelType == null) {
-            throw new PCEPDeserializerException("Unknown C-TYPE for ero label subobject. Passed: " + cType);
+            LOG.warn("Ignoring ERO label subobject with unknown C-TYPE: {}", cType);
+            return null;
         }
         final LabelBuilder lbuilder = new LabelBuilder()
                 .setUniDirectional(reserved.get(U_FLAG_OFFSET))
index bac5ee2a2e7af2a6ff114797f761d15f43800b8f..09523ccbe66974d4b233cce93fe1460d57ada079 100644 (file)
@@ -25,8 +25,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.LabelCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.label._case.Label;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.label._case.LabelBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class RROLabelSubobjectParser implements RROSubobjectParser, RROSubobjectSerializer {
+    private static final Logger LOG = LoggerFactory.getLogger(RROLabelSubobjectParser.class);
 
     public static final int TYPE = 3;
 
@@ -61,7 +64,8 @@ public class RROLabelSubobjectParser implements RROSubobjectParser, RROSubobject
 
         final LabelType labelType = this.registry.parseLabel(cType, buffer.slice());
         if (labelType == null) {
-            throw new PCEPDeserializerException("Unknown C-TYPE for ero label subobject. Passed: " + cType);
+            LOG.warn("Ignoring RRO label subobject with unknown C-TYPE: {}", cType);
+            return null;
         }
         final LabelBuilder builder = new LabelBuilder()
                 .setUniDirectional(reserved.get(U_FLAG_OFFSET))
index d92d4adfb13c7d06ddf641c7fc79a9193a30672a..1077dee337842da533b0bc5fc28050e51708519a 100644 (file)
@@ -50,7 +50,7 @@ public final class PCEPByteToMessageDecoder extends ByteToMessageDecoder {
         try {
             out.add(parse(in, errors));
         } catch (final PCEPDeserializerException e) {
-            LOG.debug("Failed to decode protocol message", e);
+            LOG.warn("Failed to decode protocol message", e);
         }
         in.discardReadBytes();
 
index dea75ea25bb4c916591453a99809c4a184192a80..58286303d8667e9bd2f73cea0a3fa1359f357a7a 100644 (file)
@@ -25,8 +25,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.explicit.route.subobjects.list.SubobjectContainer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.explicit.route.subobjects.list.SubobjectContainerBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.LabelType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class EROLabelSubobjectParser implements EROSubobjectParser, EROSubobjectSerializer {
+    private static final Logger LOG = LoggerFactory.getLogger(EROLabelSubobjectParser.class);
 
     public static final int TYPE = 3;
 
@@ -59,7 +62,8 @@ public class EROLabelSubobjectParser implements EROSubobjectParser, EROSubobject
 
         final LabelType labelType = this.registry.parseLabel(cType, buffer.slice());
         if (labelType == null) {
-            throw new RSVPParsingException("Unknown C-TYPE for ero label subobject. Passed: " + cType);
+            LOG.warn("Ignoring ERO label subobject with unknown C-TYPE: {}", cType);
+            return null;
         }
         final LabelBuilder builder = new LabelBuilder();
         builder.setUniDirectional(reserved.get(U_FLAG_OFFSET));
index 8d0130d7568eb5b03536a3be0f624abaf3f06cf6..2d026330f355c19cfa0077d9fd3f24cf25a3065f 100644 (file)
@@ -25,8 +25,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.LabelCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.label._case.Label;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.label._case.LabelBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class RROLabelSubobjectParser implements RROSubobjectParser, RROSubobjectSerializer {
+    private static final Logger LOG = LoggerFactory.getLogger(RROLabelSubobjectParser.class);
 
     public static final int TYPE = 3;
 
@@ -61,7 +64,8 @@ public class RROLabelSubobjectParser implements RROSubobjectParser, RROSubobject
 
         final LabelType labelType = this.registry.parseLabel(cType, buffer.slice());
         if (labelType == null) {
-            throw new RSVPParsingException("Unknown C-TYPE for ero label subobject. Passed: " + cType);
+            LOG.warn("Ignoring RRO label subobject with unknown C-TYPE: {}", cType);
+            return null;
         }
         final LabelBuilder builder = new LabelBuilder();
         builder.setUniDirectional(reserved.get(U_FLAG_OFFSET));
index 9440e3e3b3ed5486528cc931e0cb61a481dfbc61..6385bdcf7b96607587cef8af5c7df67fc0dfd561 100644 (file)
@@ -49,7 +49,7 @@ public abstract class EROSubobjectListParser extends AbstractRSVPObjectParser {
             LOG.debug("Attempt to parse subobject from bytes: {}", ByteBufUtil.hexDump(buffer));
             final SubobjectContainer sub = this.subobjReg.parseSubobject(type, buffer.readSlice(length), loose);
             if (sub == null) {
-                LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
+                LOG.warn("Parsing failed for subobject type: {}. Ignoring subobject.", type);
             } else {
                 LOG.debug("Subobject was parsed. {}", sub);
                 subs.add(sub);
index 17d2519826dc24d2510bb9ab3ebd150891abd9a6..60d4783980e35363b7b9ec1ad92f2ef0cd4fd7e3 100644 (file)
@@ -44,7 +44,7 @@ public abstract class RROSubobjectListParser extends AbstractRSVPObjectParser {
             LOG.debug("Attempt to parse subobject from bytes: {}", ByteBufUtil.hexDump(buffer));
             final SubobjectContainer sub = this.subobjReg.parseSubobject(type, buffer.readSlice(length));
             if (sub == null) {
-                LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
+                LOG.warn("Parsing failed for subobject type: {}. Ignoring subobject.", type);
             } else {
                 LOG.debug("Subobject was parsed. {}", sub);
                 subs.add(sub);
index 6fbf469063d6474e1ac5cc680fcea3517c6a1c0b..aaddb11a95a415da8f6a2396c4efadd5638124c0 100644 (file)
@@ -48,7 +48,7 @@ public abstract class XROSubobjectListParser extends AbstractRSVPObjectParser {
             final SubobjectContainer sub = this.subobjReg.parseSubobject(type, byteBuf.readSlice(length), mandatory);
 
             if (sub == null) {
-                LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
+                LOG.warn("Parsing failed for subobject type: {}. Ignoring subobject.", type);
             } else {
                 LOG.debug("Subobject was parsed. {}", sub);
                 subs.add(sub);