[MDSAL-116] Binding Dom Codec : ClassCastException when EncapsulatedValueCodec deserialize BinaryType Created: 18/Nov/15  Updated: 09/Mar/18  Due: 03/Dec/15  Resolved: 20/Nov/15

Status: Verified
Project: mdsal
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Claudio David Gasparini Assignee: Igor Foltin
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 4648

 Description   

Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 6.317 sec <<< FAILURE! - in org.opendaylight.protocol.bgp.rib.impl.PeerTest
testClassicPeer(org.opendaylight.protocol.bgp.rib.impl.PeerTest) Time elapsed: 1.517 sec <<< ERROR!
java.lang.IllegalStateException: MpReachNlri codec not available
at com.google.common.base.Preconditions.checkState(Preconditions.java:173)

testWithLinkstate(org.opendaylight.protocol.bgp.rib.impl.ParserToSalTest) Time elapsed: 2.117 sec <<< ERROR!
java.lang.IllegalArgumentException: Supplied value "" does not match required pattern "^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.)

{3}

([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p

{N}

\p

{L}

]+)?$"
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address.<init>(Ipv4Address.java:51)
at org.opendaylight.yangtools.binding.data.codec.impl.EncapsulatedValueCodec.deserialize(EncapsulatedValueCodec.java:53)
at org.opendaylight.yangtools.binding.data.codec.impl.LeafNodeCodecContext.domValueFromString(LeafNodeCodecContext.java:92)

java.lang.IllegalStateException: MpReachNlri codec not available
at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
at org.opendaylight.protocol.bgp.rib.impl.CodecsImpl.serializeReachNlri(CodecsImpl.java:125)
at org.opendaylight.protocol.bgp.rib.impl.RIBSupportContextImpl.writeRoutes(RIBSupportContextImpl.java:47)
at org.opendaylight.protocol.bgp.rib.impl.TableContext.writeRoutes(TableContext.java:49)
at org.opendaylight.protocol.bgp.rib.impl.AdjRibInWriter.updateRoutes(AdjRibInWriter.java:254)
at org.opendaylight.protocol.bgp.rib.impl.BGPPeer.onMessage(BGPPeer.java:125)
at org.opendaylight.protocol.bgp.rib.mock.EventBusRegistration.sendMessage(EventBusRegistration.java:88)
at org.opendaylight.protocol.bgp.rib.mock.EventBusRegistration.<init>(EventBusRegistration.java:55)
at org.opendaylight.protocol.bgp.rib.mock.EventBusRegistration.createAndRegister(EventBusRegistration.java:46)
at org.opendaylight.protocol.bgp.rib.mock.BGPMock.registerUpdateListener(BGPMock.java:118)
at org.opendaylight.protocol.bgp.rib.impl.ParserToSalTest.testWithoutLinkstate(ParserToSalTest.java:154)



 Comments   
Comment by Vratko Polak [ 18/Nov/15 ]

Probably already fixed: https://git.opendaylight.org/gerrit/#/c/29849/4/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/StringType.java

Comment by Claudio David Gasparini [ 19/Nov/15 ]

previous issue already fixed.

Still

Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 10.196 sec <<< FAILURE! - in org.opendaylight.protocol.bgp.rib.impl.ParserToSalTest
testWithLinkstate(org.opendaylight.protocol.bgp.rib.impl.ParserToSalTest) Time elapsed: 2.139 sec <<< ERROR!
java.lang.ClassCastException: Cannot cast java.util.Collections$EmptyList to [B
at sun.invoke.util.ValueConversions.newClassCastException(ValueConversions.java:461)
at sun.invoke.util.ValueConversions.castReference(ValueConversions.java:456)
at org.opendaylight.yangtools.binding.data.codec.impl.EncapsulatedValueCodec.deserialize(EncapsulatedValueCodec.java:53)
at org.opendaylight.yangtools.binding.data.codec.impl.LeafNodeCodecContext.createDefaultObject(LeafNodeCodecContext.java:84)
at org.opendaylight.yangtools.binding.data.codec.impl.LeafNodeCodecContext.<init>(LeafNodeCodecContext.java:53)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getLeafNodesUsingReflection(BindingCodecContext.java:275)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getLeafNodes(BindingCodecContext.java:237)
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.<init>(DataObjectCodecContext.java:86)
at org.opendaylight.yangtools.binding.data.codec.impl.ContainerNodeCodecContext.<init>(ContainerNodeCodecContext.java:19)
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecPrototype.createInstance(DataContainerCodecPrototype.java:126)
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecPrototype.get(DataContainerCodecPrototype.java:112)
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.streamChild(DataObjectCodecContext.java:149)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingToNormalizedStreamWriter.enter(BindingToNormalizedStreamWriter.java:67)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingToNormalizedStreamWriter.startContainerNode(BindingToNormalizedStreamWriter.java:145)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.node.identifier.c.router.identifier.isis.node._case.IsisNode$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.node.identifier.c.router.identifier.IsisNodeCase$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:295)
at org.opendaylight.yangtools.binding.data.codec.util.ChoiceDispatchSerializer.serialize(ChoiceDispatchSerializer.java:47)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.linkstate.object.type.node._case.NodeDescriptors$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.linkstate.object.type.NodeCase$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:295)
at org.opendaylight.yangtools.binding.data.codec.util.ChoiceDispatchSerializer.serialize(ChoiceDispatchSerializer.java:47)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.linkstate.destination.CLinkstateDestination$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.linkstate._case.DestinationLinkstate$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.update.attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationLinkstateCase$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:295)
at org.opendaylight.yangtools.binding.data.codec.util.ChoiceDispatchSerializer.serialize(ChoiceDispatchSerializer.java:47)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.mp.reach.nlri.AdvertizedRoutes$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.MpReachNlri$StreamWriter.serialize(DataObjectSerializerPrototype.java)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:295)
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecContext.writeAsNormalizedNode(DataContainerCodecContext.java:202)
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecContext.serialize(DataContainerCodecContext.java:195)
at org.opendaylight.yangtools.binding.data.codec.impl.NonCachingCodec.serialize(NonCachingCodec.java:30)
at org.opendaylight.protocol.bgp.rib.impl.CodecsImpl.serializeReachNlri(CodecsImpl.java:126)
at org.opendaylight.protocol.bgp.rib.impl.RIBSupportContextImpl.writeRoutes(RIBSupportContextImpl.java:47)
at org.opendaylight.protocol.bgp.rib.impl.TableContext.writeRoutes(TableContext.java:49)
at org.opendaylight.protocol.bgp.rib.impl.AdjRibInWriter.updateRoutes(AdjRibInWriter.java:254)
at org.opendaylight.protocol.bgp.rib.impl.BGPPeer.onMessage(BGPPeer.java:125)
at org.opendaylight.protocol.bgp.rib.mock.EventBusRegistration.sendMessage(EventBusRegistration.java:88)
at org.opendaylight.protocol.bgp.rib.mock.EventBusRegistration.<init>(EventBusRegistration.java:55)
at org.opendaylight.protocol.bgp.rib.mock.EventBusRegistration.createAndRegister(EventBusRegistration.java:46)
at org.opendaylight.protocol.bgp.rib.mock.BGPMock.registerUpdateListener(BGPMock.java:118)
at org.opendaylight.protocol.bgp.rib.impl.ParserToSalTest.testWithLinkstate(ParserToSalTest.java:142)

Comment by Claudio David Gasparini [ 19/Nov/15 ]

Seems to be an yang bug, I'm changing the product owner.

Exception is thrown when method EncapsulatedValueCodec->deserialize(final Object input) gets empty input during process of IsisNodeCase.
Not sure what is the cause of the issue since, IsisNodeCase is not empty.

Comment by Claudio David Gasparini [ 19/Nov/15 ]

[typeName(urn:opendaylight:params:xml:ns:yang:network:concepts?revision=2013-11-25)iso-system-identifier, baseType=BinaryType [name=(urn:ietf:params:xml:ns:yang:1)binary, description=The binary built-in type represents any binary data, i.e., a sequence of octets., reference=https://tools.ietf.org/html/rfc6020#section-9.8, bytes=[], lengthConstraints=[LengthConstraintImpl [min=0, max=9223372036854775807, description=, errorAppTag=length-out-of-specified-bounds, reference=, errorMessage=The argument is out of bounds <0, 9223372036854775807>]], units=], path=AbsoluteSchemaPath

{path[(urn:opendaylight:params:xml:ns:yang:network:concepts?revision=2013-11-25)iso-system-identifier]}

, description=, reference=https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4, unknownSchemaNodes=[], status=CURRENT, units=null, defaultValue=null]

Excetion is thrwon when EmptyList is pass to

public Object deserialize(final Object input) {
try

{ return constructor.invokeExact(input); }

catch (Throwable e)

{ throw Throwables.propagate(e); }

}

Comment by Martin Ciglan [ 20/Nov/15 ]

Claudio confirms that issue persists, will be fixed

Comment by Tony Tkacik [ 20/Nov/15 ]

https://git.opendaylight.org/gerrit/29969
https://git.opendaylight.org/gerrit/29970
https://git.opendaylight.org/gerrit/29971

Generated at Wed Feb 07 20:08:41 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.