[CONTROLLER-58] DataUpdates not propogating after addition of new bundle Created: 20/Nov/13  Updated: 25/Jul/23  Resolved: 14/Jul/14

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

Type: Improvement
Reporter: Ed Warnicke Assignee: Unassigned
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Mac OS
Platform: PC



 Description   

When building the openflowplugin/openflowplugin-parent
and then attempting to run the resulting controller in openflowplugin/distributions/base attempts to run mininet as described here:

https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin::End_to_End_Inventory

Do not work. They do work one commit back (on the current master on openflowplugin). I suspect we are hitting an MD-SAL bug.

The offending patch is here: https://git.opendaylight.org/gerrit/#/c/2887/
Its a very simple attempt to listen for all notifications and all data changes for purposes of debugging.

There suspected Exception thrown on the console is:

2013-11-19 19:55:17.360 CST [pool-16-thread-2] ERROR o.o.c.m.s.c.i.service.TwoPhaseCommit - Finish Commit failed
java.lang.NullPointerException: null
at org.opendaylight.controller.sal.dom.broker.impl.DataUtils.merge(DataUtils.java:42) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.DataUtils.read(DataUtils.java:34) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.HashMapDataStore.readOperationalData(HashMapDataStore.java:42) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.HashMapDataStore.readOperationalData(HashMapDataStore.java:20) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter$2.apply(AbstractDataReadRouter.java:78) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter$2.apply(AbstractDataReadRouter.java:75) ~[bundlefile:na]
at com.google.common.collect.Iterators$8.transform(Iterators.java:860) ~[bundlefile:na]
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48) ~[bundlefile:na]
at org.opendaylight.controller.sal.dom.broker.impl.DataReaderRouter.merge(DataReaderRouter.java:15) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.DataReaderRouter.merge(DataReaderRouter.java:8) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter.readOperationalData(AbstractDataReadRouter.java:39) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.service.AbstractDataBroker.readOperationalData(AbstractDataBroker.java:114) ~[bundlefile:na]
at org.opendaylight.controller.sal.dom.broker.DataBrokerImpl.readOperationalData(DataBrokerImpl.java:14) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.osgi.DataProviderServiceProxy.readOperationalData(DataProviderServiceProxy.java:33) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentDataServiceConnector.readOperationalData(BindingIndependentDataServiceConnector.java:43) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentDataServiceConnector.readOperationalData(BindingIndependentDataServiceConnector.java:27) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter$2.apply(AbstractDataReadRouter.java:78) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter$2.apply(AbstractDataReadRouter.java:75) ~[bundlefile:na]
at com.google.common.collect.Iterators$8.transform(Iterators.java:860) ~[bundlefile:na]
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48) ~[bundlefile:na]
at org.opendaylight.controller.sal.binding.impl.util.BindingAwareDataReaderRouter.merge(BindingAwareDataReaderRouter.java:12) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.util.BindingAwareDataReaderRouter.merge(BindingAwareDataReaderRouter.java:8) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter.readOperationalData(AbstractDataReadRouter.java:39) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.service.AbstractDataBroker.readOperationalData(AbstractDataBroker.java:114) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.publishDataChangeEvent(TwoPhaseCommit.java:112) [bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:92) [bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:30) [bundlefile: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]

Note: here is the git log -3 for both openflowplugin and controller to assist in debugging:

Macintosh-3:openflowplugin hagbard$ git log -3
commit 38231f27b365930bf37aff6d3a6d17a5a8b60868
Author: Ed Warnicke <eaw@cisco.com>
Date: Tue Nov 19 19:23:28 2013 -0600

DO NOT MERGE - For Debugging Purposes only

Added DebugProvider that outputs log messgae on on notifications
and DataChange events.

The only change is the addition of this bundle, and the
inventory nodes/node is no longer showing up in RESTCONF.

Change-Id: I951d182648707d28f62b0df94866c43cfdbb8c1b
Signed-off-by: Ed Warnicke <eaw@cisco.com>

commit f202033c27407de2a26140744fa5bff152dc377a
Author: Ed Warnicke <eaw@cisco.com>
Date: Mon Nov 18 18:37:17 2013 -0600

Added PopListner for PacketIn

Change-Id: I4927d1a1215e021a9a3c7eea3c26c9a37fc4af92
Signed-off-by: Ed Warnicke <eaw@cisco.com>

commit 2a47de8380b599a20d8577b7f265b7d8b84fd020
Author: Michal Rehak <mirehak@cisco.com>
Date: Thu Nov 14 18:52:32 2013 +0100

popListener mapping

fixed sample - rpc return types
minor code tidyup

Change-Id: I9ed2d55bb07ad4442343141bc7594924e56630cc
Signed-off-by: Michal Rehak <mirehak@cisco.com>

****************************

Macintosh-3:controller hagbard$ git log -3
commit 4e6f0838e508e0dce5dfa62faa29b43e979f5ef8
Merge: d490a11 027e02f
Author: Ed Warnicke <eaw@cisco.com>
Date: Tue Nov 19 20:07:20 2013 +0000

Merge "Ganymed ChannelManager hack for subsystem command"

commit d490a11b531a724b9f46ca931b2c98e9527dde7f
Merge: 6ad5abb d8654e1
Author: Ed Warnicke <eaw@cisco.com>
Date: Tue Nov 19 19:34:22 2013 +0000

Merge "AbstractConfigTest - exposed BundleContext and ServiceRegistration mock."

commit 6ad5abbd24e3c0369df81955ba099135c782d1d3
Merge: d6caaf8 9ba0bf6
Author: Ed Warnicke <eaw@cisco.com>
Date: Tue Nov 19 19:23:40 2013 +0000

Merge "Fixed quotation mark in action-types.yang"

********************

And the current latest merge on yangtools is here: https://git.opendaylight.org/gerrit/#/c/2865/



 Comments   
Comment by Tony Tkacik [ 24/Jan/14 ]

Root of the tree does not have java class associated - it is impossible to generate one in compile time (root node - contains top-level items of all nodes).
This will require change in the API contract.
This applies only to the Binding Aware part.

Binding independent part is able to retrieve root, because it works with more generic structures.

Comment by Tony Tkacik [ 14/Jul/14 ]

This bug reports legacy code, reading of "/" in Binding Aware will not be supported.
It is suppoted in DOM-only.

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