Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
None
-
None
-
None
-
Operating System: Mac OS
Platform: PC
-
148
-
Normal
Description
Root issue: In inventory-managers NodeChangeCommiter.onNodeUpdate we eventually
hit an NPE that is difficult to trace. I have traced it as far as a call to
AbstractDataBroker.readOperationalData... but at that point the debugger gets lost.
Note: This only happens when a FlowCapableNode is updated, not when a simple Node is updated.
Note: This happens whether the Node is being created or updated.
Stacktrace from debugger as far as it gets:
Thread [pool-16-thread-2] (Suspended (breakpoint at line 182 in AbstractDataModification))
DataTransactionImpl(AbstractDataModification<P,D>).hasOperationalOriginal(P) line: 182
DataTransactionImpl(AbstractDataModification<P,D>).putOperationalData(P, D) line: 77
DataTransactionImpl(AbstractDataModification<P,D>).putRuntimeData(P, D) line: 86
NodeChangeCommiter.onNodeUpdated(NodeUpdated) line: 104
NodeChangeCommiter$$Broker$ListenerInvoker.onNotification(Notification) line: not available
NotifyTask.call() line: 46
FutureTask$Sync.innerRun() line: 334
FutureTask<V>.run() line: 166
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1145
ThreadPoolExecutor$Worker.run() line: 615
Thread.run() line: 724
path: [org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri [_value=openflow:1]]]]
Setup:
This was found using the distribution from openflowplugin/distributions/base
https://git.opendaylight.org/gerrit/#/c/2797/2
Using a controller built from:
Macintosh-3:controller hagbard$ git log -1
commit 8b84c5a210d5bf688fde0eb0db1b7f21f78a4f0b
Merge: b76ceb5 0533bdd
Author: Jason Ye <yisye@cisco.com>
Date: Sun Nov 17 19:45:23 2013 +0000
Breakpoints I've found useful:
AbstractDataBroker [line: 79] - readOperationalData(P)
AbstractDataModification [line: 182] - hasOperationalOriginal(P)
AbstractDataReadRouter [line: 37] - readOperationalData(P)
ConnectionConductorImpl [line: 196] - onMultipartReplyMessage(MultipartReplyMessage)
NodeChangeCommiter [line: 58] - onNodeConnectorUpdated(NodeConnectorUpdated)
NodeChangeCommiter [line: 104] - onNodeUpdated(NodeUpdated)
NotifyTask [line: 49] - call()
AbstractDataBroker.xtend [line: 56]
FlowCapableInventoryProvider.xtend [line: 96]
FlowCapableInventoryProvider.xtend [line: 109]