[CONTROLLER-398] NPE at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer.toLegacySimple Created: 25/Apr/14  Updated: 25/Jul/23  Resolved: 12/May/14

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

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

Operating System: Linux
Platform: PC


External issue ID: 849

 Description   

Encountering NPE when calling getOriginalOperationalSubtree() in a registered org.opendaylight.controller.sal.binding.api.data.DataChangeListener.

Expected: return null.

Sample code:

registration:
dataBrokerService.registerDataChangeListener(reportedLspId, new DataChangeListener());

DataChangeListener:
public void onDataChanged(DataChangeEvent<InstanceIdentifier<?>, DataObject> change)

{ originalLsp = (ReportedLsp) change.getOriginalOperationalSubtree(); updatedLsp = (ReportedLsp) change.getUpdatedOperationalSubtree(); }

Full stack trace:

java.lang.NullPointerException: null
at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer.toLegacySimple(DataNormalizer.java:159) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer.toLegacy(DataNormalizer.java:154) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:106) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBindingData(AbstractForwardedDataBroker.java:128) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getOriginalSubtree(AbstractForwardedDataBroker.java:210) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getOriginalSubtree(AbstractForwardedDataBroker.java:155) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$OperationalChangeEvent.getOriginalOperationalSubtree(LegacyDataChangeEvent.java:118) ~[bundlefile:na]
at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$OperationalChangeEvent.getOriginalOperationalSubtree(LegacyDataChangeEvent.java:96) ~[bundlefile:na]



 Comments   
Comment by Valentin Mayamsin [ 25/Apr/14 ]

Version:

org.opendaylight.controller.version = 0.1
org.opendaylight.controller.build.scm.version = 832327e85f47db63006e9bd6115ea85104124f4f
org.opendaylight.controller.build.user = jenkins-controller
org.opendaylight.controller.build.workspace = **********
org.opendaylight.controller.build.timestamp = 1398341431797
org.opendaylight.controller.build.machine = **********

Comment by Valentin Mayamsin [ 28/Apr/14 ]

To reproduce:

1. Create an LSP with NetworkTopologyPcepService.addLsp()
2. Subscribe to it with DataBrokerService.registerDataChangeListener(id, listener) where id is:
InstanceIdentifier.builder(NetworkTopology.class)
.child(Topology.class, new TopologyKey(new TopologyId(topologyId)))
.child(Node.class, new NodeKey(new NodeId(nodeId)))
.augmentation(Node1.class)
.child(PathComputationClient.class)
.child(ReportedLsp.class, new ReportedLspKey(lspName));

3. listener is:
public void onDataChanged(DataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
ReportedLsp originalLsp = null;
ReportedLsp updatedLsp = null;
originalLsp = (ReportedLsp) change.getOriginalOperationalSubtree();
updatedLsp = (ReportedLsp) change.getUpdatedOperationalSubtree();

4. First message you'll receive will trigger NPE

Comment by Debolina Bandyopadhyay [ 28/Apr/14 ]

Thanks Valentin.

Comment by Debolina Bandyopadhyay [ 01/May/14 ]

Which distribution did you run the controller, when you faced this issue?

Comment by Valentin Mayamsin [ 01/May/14 ]

Fedora release 18 (Spherical Cow)

Comment by Debolina Bandyopadhyay [ 01/May/14 ]

No I mean, did you run the controller from controller distribution or openflowplugin or integration or service provider distribution?

Comment by Valentin Mayamsin [ 01/May/14 ]

This is special build for Cisco. What specifically are you interested in?

Comment by Tony Tkacik [ 06/May/14 ]

Proposed fix which explicitly tests if before / after subtree image
is available.

https://git.opendaylight.org/gerrit/6740

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