Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
None
-
None
-
None
-
Operating System: All
Platform: All
-
2953
-
Highest
Description
When reading from the datastore root(YangInstanceIdentifier.builder().build()) we get java.util.NoSuchElementException the offending line is rwTx.read(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.builder().build()).checkedGet();
This is possible with just pure IMDS but with clustering enabled by default we get this exception.
Steps to reproduce with netconf-mdsal-northbound:
1) feature:install odl-restconf odl-netconf-connector-all odl-netconf-mdsal
2) send a POST request to:
with payload:
<module xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type>
<name>mdsal-config</name>
<address xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">127.0.0.1</address>
<port xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">2830</port>
<username xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">admin</username>
<password xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">admin</password>
<tcp-only xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">false</tcp-only>
<event-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netty">prefix:netty-event-executor</type>
<name>global-event-executor</name>
</event-executor>
<binding-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">prefix:binding-broker-osgi-registry</type>
<name>binding-osgi-broker</name>
</binding-registry>
<dom-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">prefix:dom-broker-osgi-registry</type>
<name>dom-broker</name>
</dom-registry>
<client-dispatcher xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:netconf">prefix:netconf-client-dispatcher</type>
<name>global-netconf-dispatcher</name>
</client-dispatcher>
<processing-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:threadpool</type>
<name>global-netconf-processing-executor</name>
</processing-executor>
</module>
3) try to read data from mdsal-loopback connection:
http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/node/mdsal-config/yang-ext:mount
it fails with applicationoperation-failedProblem to get data from transaction.
and this exception in karaf log :
2015-04-07 13:30:35,379 | ERROR | oupCloseable-6-4 | NetconfOperationRouterImpl | 220 - org.opendaylight.controller.netconf-impl - 0.3.0.SNAPSHOT | Unexpected exception during netconf operation execution
java.util.NoSuchElementException
at com.google.common.collect.Iterators$1.next(Iterators.java:80)[78:com.google.guava:18.0.0]
at org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory.getModuleName(ShardStrategyFactory.java:47)[254:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory.getStrategy(ShardStrategyFactory.java:36)[254:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.TransactionProxy.shardNameFromIdentifier(TransactionProxy.java:462)[254:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.TransactionProxy.getOrCreateTxFutureCallback(TransactionProxy.java:470)[254:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.TransactionProxy.read(TransactionProxy.java:259)[254:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.dom.broker.impl.DOMForwardedReadWriteTransaction.read(DOMForwardedReadWriteTransaction.java:47)[229:org.opendaylight.controller.sal-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.netconf.mdsal.connector.ops.get.Get.handleWithNoSubsequentOperations(Get.java:56)[266:org.opendaylight.controller.mdsal-netconf-connector:0.3.0.SNAPSHOT]