[MDSAL-298] java.lang.IllegalStateException: Unsupported data type Created: 05/Dec/17  Updated: 06/Mar/18  Resolved: 06/Mar/18

Status: Resolved
Project: mdsal
Component/s: None
Affects Version/s: Nitrogen SR1, Carbon SR2
Fix Version/s: Oxygen, Nitrogen SR2, Carbon SR4

Type: Bug Priority: Medium
Reporter: Claudio David Gasparini Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: Text File data_dump.txt    
Issue Links:
Duplicate
is duplicated by MDSAL-128 onData(Tree)Change is not invoked if ... Resolved

 Description   

log 

2017-12-05 18:28:11,698 | ERROR | on-dispatcher-45 | DataTreeChangeListenerActor | 200 - org.opendaylight.controller.sal-clustering-commons - 1.5.3.SNAPSHOT | member-1-shard-topology-operational: Error notifying listener org.opendaylight.controller.md.sal.binding.impl.BindingClusteredDOMDataTreeChangeListenerAdapter@530d9f08
java.lang.IllegalStateException: Unsupported data type class org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListNodeBuilder$ImmutableUnkeyedListNode
at org.opendaylight.yangtools.binding.data.codec.impl.ListNodeCodecContext.deserialize(ListNodeCodecContext.java:32)[95:org.opendaylight.mdsal.binding-dom-codec:0.10.3.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.LazyDataObjectModification.deserialize(LazyDataObjectModification.java:200)[169:org.opendaylight.controller.sal-binding-broker-impl:1.5.3.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.LazyDataObjectModification.getDataAfter(LazyDataObjectModification.java:125)[169:org.opendaylight.controller.sal-binding-broker-impl:1.5.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.handleChangedNode(NodeChangedListener.java:438)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.handleChangedNode(NodeChangedListener.java:451)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.handleChangedNode(NodeChangedListener.java:451)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.handleChangedNode(NodeChangedListener.java:451)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.handleChangedNode(NodeChangedListener.java:451)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.handleChangedNode(NodeChangedListener.java:451)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.handleChangedNode(NodeChangedListener.java:451)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.bgpcep.pcep.tunnel.provider.NodeChangedListener.onDataTreeChanged(NodeChangedListener.java:394)[304:org.opendaylight.bgpcep.pcep-tunnel-provider:0.7.3.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:41)[169:org.opendaylight.controller.sal-binding-broker-impl:1.5.3.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:59)[207:org.opendaylight.controller.sal-distributed-datastore:1.5.3.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:38)[207:org.opendaylight.controller.sal-distributed-datastore:1.5.3.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:38)[200:org.opendaylight.controller.sal-clustering-commons:1.5.3.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)[181:com.typesafe.akka.actor:2.4.18]
at akka.actor.Actor$class.aroundReceive(Actor.scala:502)[181:com.typesafe.akka.actor:2.4.18]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)[181:com.typesafe.akka.actor:2.4.18]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[181:com.typesafe.akka.actor:2.4.18]
at akka.actor.ActorCell.invoke(ActorCell.scala:495)[181:com.typesafe.akka.actor:2.4.18]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[181:com.typesafe.akka.actor:2.4.18]
at akka.dispatch.Mailbox.run(Mailbox.scala:224)[181:com.typesafe.akka.actor:2.4.18]
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[181:com.typesafe.akka.actor:2.4.18]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[177:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[177:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[177:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[177:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]

 

some debug shows that object to be deserialized contains

 

ImmutableUnkeyedListNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2017-10-25)subobject,
value=[ImmutableUnkeyedListEntryNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2017-10-25)subobject,
value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2017-10-25)loose, value=false, attributes={}},
ImmutableChoiceNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2017-10-25)subobject-type,
value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2017-10-25)ip-prefix,
value=[ImmutableLeafNode\{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2017-10-25)ip-prefix, value=1.1.1.1/32, attributes={}}], attributes={}}]}], attributes={}}]}

 



 Comments   
Comment by Claudio David Gasparini [ 05/Dec/17 ]

Steps to reproduce it

cherry-pick https://git.opendaylight.org/gerrit/#/c/66248/

compile and run distribution.

install feat

feature:install odl-restconf odl-bgpcep-pcep

 

in another console run pcc-mock

bgpcep/pcep/pcc-mock

java jar pcep-pcc-mock*-executable.jar --pcc 1 --lsp 1

 

 

Comment by Claudio David Gasparini [ 05/Dec/17 ]

This bugs affects oxygen, nitrogen and carbon, steps attached are for Nitrogen

Comment by Robert Varga [ 03/Jan/18 ]

Reproduced with current Nitrogen. Triggering data dump is attached.

Comment by Robert Varga [ 03/Jan/18 ]

This looks like it's coming from confusion between ListNodeCodecContext.deserialize() and ListNodeCodecContext.deserializeObject() – more investigation is needed.

Comment by Robert Varga [ 29/Jan/18 ]

As it turns out we have two issue interplay here:

  • NormalizedNodeDataTreeCandidateNode.getChildNodes() does not account for OrderedNodeContainer, reporting no children for them
  • BindingStructuralType does not account for UnkeyedListNode
Comment by Robert Varga [ 29/Jan/18 ]

https://git.opendaylight.org/gerrit/#/q/topic:mdsal298 tracks patches to all projects involved.

Comment by Robert Varga [ 29/Jan/18 ]

Those patches do not do the right thing, as they end up reporting each child individually, which is not correct as each of them has the same identifier.

Comment by Robert Varga [ 29/Jan/18 ]

Oxygen patches have been updated to address this issue properly. Cherry-picks will be updated once Oxygen is merged.

Comment by Claudio David Gasparini [ 31/Jan/18 ]

tested oxygen patches, and issue has been solved.

Regards, 

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