[YANGTOOLS-242] Deserialization error in Yang Choice Created: 01/Aug/14  Updated: 10/Apr/22  Resolved: 08/Oct/14

Status: Resolved
Project: yangtools
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Reinaldo Penno Assignee: Tony Tkacik
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Mac OS
Platform: PC


External issue ID: 1467

 Description   

Not sure if related to https://bugs.opendaylight.org/show_bug.cgi?id=1466 or one more issue around Choice/Groups

I have the following model:

grouping ip-port-locator {
description
"Data plane-locator. The Service Function Forwarder uses the IP:port tuple
to send packets to this Service Function.";
leaf ip

{ type inet:ip-address; }

leaf port

{ type inet:port-number; }

}

grouping mac-address-locator {
description
"Data plane-locator. The Service Function Forwarder uses the mac-address
to send packets to this Service Function.";
leaf mac

{ type yang:mac-address; }

}

grouping data-plane-locator {
choice locator-type {
mandatory true;
case ip

{ uses ip-port-locator; }

case mac

{ uses mac-address-locator; }

}
}
}

In OnDataChanged() when I issue a getCreatedData, I get:

2014-08-01 09:03:31.618 PDT [pool-15-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize path KeyedInstanceIdentifier

{targetType=interface org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction, path=[org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.ServiceFunctions, org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction[key=ServiceFunctionKey [_name=fw-ca]]]}

data Node[ImmutableCompositeNode], qName[service-function], modify[n/a], children.size = 5
2014-08-01 09:03:31.633 PDT [pool-15-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)service-functions/(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)service-function/(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)service-function[

{(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)name=fw-ca}

]=ImmutableMapEntryNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)service-function[

{(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)name=fw-ca}

], value=[ImmutableContainerNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)sf-data-plane-locator, value=[ImmutableChoiceNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)locator-type, value=[ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)ip, value=172.16.155.100, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)port, value=5050, attributes={}}]}], attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)ip-mgmt-address, value=2001::2, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)service-function-forwarder, value=ovs-1, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)name, value=fw-ca, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)type, value=firewall, attributes={}}], attributes={}}, omitting it
org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException: Data deserialization failed
at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.dataObjectFromDataDom(RuntimeGeneratedMappingServiceImpl.java:299) ~[bundlefile:na]
at org.opendaylight.controller.config.yang.md.sal.binding.impl.RuntimeMappingModule$RuntimeGeneratedMappingServiceProxy.dataObjectFromDataDom(RuntimeMappingModule.java:145) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:259) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:272) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:106) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:223) [bundlefile:na]
at org.opendaylight.sfc.provider.SfcProviderSfEntryDataListener.onDataChanged(SfcProviderSfEntryDataListener.java:81) [bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:198) [bundlefile:na]
at org.opendaylight.controller.md.sal.dom.store.impl.ChangeListenerNotifyTask.run(ChangeListenerNotifyTask.java:33) [bundlefile:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_60]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_60]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_60]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_60]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_60]
Caused by: org.opendaylight.yangtools.sal.binding.generator.impl.TransformerGeneratorException: Failed to generate for type interface org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.data.plane.locator.locator.type.Mac
at org.opendaylight.yangtools.sal.binding.generator.impl.TransformerGeneratorException.wrap(TransformerGeneratorException.java:18) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.AbstractTransformerGenerator.caseCodecFor(AbstractTransformerGenerator.java:117) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry.getCaseCodecFor(LazyGeneratedCodecRegistry.java:412) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$DispatchChoiceCodecImpl.tryToLoadImplementation(LazyGeneratedCodecRegistry.java:1031) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$DispatchChoiceCodecImpl.tryToLoadImplementation(LazyGeneratedCodecRegistry.java:1020) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$DispatchChoiceCodecImpl.tryToLoadImplementations(LazyGeneratedCodecRegistry.java:1045) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$DispatchChoiceCodecImpl.adaptForPathImpl(LazyGeneratedCodecRegistry.java:1055) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$LocationAwareDispatchCodec.adaptForPath(LazyGeneratedCodecRegistry.java:789) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$LocationAwareDispatchCodec.deserialize(LazyGeneratedCodecRegistry.java:709) ~[bundlefile:na]
at org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.data.plane.locator.LocatorType$Broker$Codec$DOM.fromDomStatic(LocatorType$Broker$Codec$DOM.java) ~[na:na]
at org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.function.entry.SfDataPlaneLocator$Broker$Codec$DOM.fromDomStatic(SfDataPlaneLocator$Broker$Codec$DOM.java) ~[na:na]
at org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction$Broker$Codec$DOM.fromDomStatic(ServiceFunction$Broker$Codec$DOM.java) ~[na:na]
at org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction$Broker$Codec$DOM.deserialize(ServiceFunction$Broker$Codec$DOM.java) ~[na:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$DataContainerCodecImpl.deserialize(LazyGeneratedCodecRegistry.java:641) ~[bundlefile:na]
at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.dataObjectFromDataDom(RuntimeGeneratedMappingServiceImpl.java:291) ~[bundlefile:na]
... 13 common frames omitted



 Comments   
Comment by Reinaldo Penno [ 01/Aug/14 ]

I also found https://bugs.opendaylight.org/show_bug.cgi?id=210

Comment by Tony Tkacik [ 04/Aug/14 ]

Not related to MDSAL-43 (this is only about instance identifier) or 210 (this is about adding / improving generated TO)s.

Comment by Reinaldo Penno [ 05/Aug/14 ]

Any progress on this one? All these DataDeserialization bugs are blocking SFC development since we can not test or progress development.

Comment by Reinaldo Penno [ 28/Aug/14 ]

Any progress?

Comment by Tony Tkacik [ 02/Sep/14 ]

Could you try with latest controller master?
Offending code was replaced with newer implementation, which should not experience
same failures anymore and should not have problem deserializing from XML to Binding. The replacement code was introduced in two weeks ago.

Comment by Tony Tkacik [ 20/Sep/14 ]

Downgraded to major, since bug is present in legacy codecs, which are used in Hydrogen and Helium M4. Since Helium M5 this codecs are not used.

Comment by Tony Tkacik [ 08/Oct/14 ]

New codecs infrastructure used for data operations does not experience this problem.

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