[CONTROLLER-101] NPE due to failure to look up augmentation for configuration on node-connector with flow-capable-node-connector augmentation. Created: 16/Dec/13  Updated: 25/Jul/23  Resolved: 14/Jan/14

Status: Resolved
Project: controller
Component/s: mdsal
Affects Version/s: None
Fix Version/s: None

Type: Improvement
Reporter: Ed Warnicke 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



 Description   

I get this exception on the OSGI console:

2013-12-15 20:54:57.328 PST [pool-19-thread-1] ERROR o.o.c.s.b.i.c.d.BindingIndependentDataServiceConnector - Ommiting from BA transaction: /(urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[

{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:1}

]/(urn:opendaylight:inventory?revision=2013-08-19)node-connector[

{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:1:2}

]/(urn:opendaylight:flow:inventory?revision=2013-08-19)configuration.
org.opendaylight.controller.sal.binding.impl.connect.dom.DeserializationException: java.lang.NullPointerException
at org.opendaylight.controller.sal.binding.dom.serializer.impl.RuntimeGeneratedMappingServiceImpl.tryDeserialization(RuntimeGeneratedMappingServiceImpl.java:381) ~[na:na]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:367) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentDataServiceConnector.createDomToBindingTransaction(BindingIndependentDataServiceConnector.java:131) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentDataServiceConnector.access$700(BindingIndependentDataServiceConnector.java:35) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentDataServiceConnector$DomToBindingCommitHandler.requestCommit(BindingIndependentDataServiceConnector.java:354) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:76) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) ~[na:na]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) ~[na:1.7.0_25]
at java.util.concurrent.FutureTask.run(FutureTask.java:166) ~[na:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_25]
at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
Caused by: java.lang.NullPointerException: null
at java.util.concurrent.ConcurrentHashMap.hash(ConcurrentHashMap.java:333) ~[na:1.7.0_25]
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:988) ~[na:1.7.0_25]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.LazyGeneratedCodecRegistry.getClassForPath(LazyGeneratedCodecRegistry.java:194) ~[na:na]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.InstanceIdentifierCodecImpl._deserializePathArgument(InstanceIdentifierCodecImpl.java:108) ~[na:na]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.InstanceIdentifierCodecImpl.deserializePathArgument(InstanceIdentifierCodecImpl.java:263) ~[na:na]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.InstanceIdentifierCodecImpl.deserialize(InstanceIdentifierCodecImpl.java:82) ~[na:na]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.RuntimeGeneratedMappingServiceImpl$8.call(RuntimeGeneratedMappingServiceImpl.java:363) ~[na:na]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.RuntimeGeneratedMappingServiceImpl$8.call(RuntimeGeneratedMappingServiceImpl.java:359) ~[na:na]
at org.opendaylight.controller.sal.binding.dom.serializer.impl.RuntimeGeneratedMappingServiceImpl.tryDeserialization(RuntimeGeneratedMappingServiceImpl.java:376) ~[na:na]
... 11 common frames omitted

When attempting to PUT to URL: http://192.168.195.157:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/node-connector/openflow:1:2/configuration

Body:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<configuration
xmlns="urn:opendaylight:flow:inventory">
<port-down>false</port-down>
<port-no-recv>false</port-no-recv>
<port-no-packet-in>false</port-no-packet-in>
<port-no-fwd>false</port-no-fwd>
</configuration>

When I trace it through I come to LazyGeneratedCodecRegistry.getClassForPath line 194 where:

path: SchemaPath [path=[(urn:opendaylight:inventory?revision=2013-08-19)nodes, (urn:opendaylight:inventory?revision=2013-08-19)node, (urn:opendaylight:inventory?revision=2013-08-19)node-connector, (urn:opendaylight:flow:inventory?revision=2013-08-19)configuration], absolute=true]

type: null

node: ContainerSchemaNodeImpl[qname=(urn:opendaylight:flow:inventory?revision=2013-08-19)configuration]

names: [(urn:opendaylight:inventory?revision=2013-08-19)nodes, (urn:opendaylight:inventory?revision=2013-08-19)node, (urn:opendaylight:inventory?revision=2013-08-19)node-connector, (urn:opendaylight:flow:inventory?revision=2013-08-19)configuration]

and so the line:

WeakReference<Class> weakRef = typeToClass.get(type);

Throws the NPE because type is null.

This is all against:

https://git.opendaylight.org/gerrit/#/c/3740/1 - controller
https://git.opendaylight.org/gerrit/#/c/3741/1 - openflowplugin


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