Uploaded image for project: 'controller'
  1. controller
  2. CONTROLLER-1238

Clustering : Unable to read from datastore root with clustering enabled

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • mdsal
    • 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:

      http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/controller-config/yang-ext:mount/config:modules

      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]

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            moraja@cisco.com Moiz Raja
            tcere Tomas Cere
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: