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

Component gets started before models are available in mdsal

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • Post-Helium
    • None
    • mdsal
    • None
    • Operating System: All
      Platform: All

    • 3067

    Description

      When starting a feature via config subsystem sometimes models required by the modules in the feature are not available in md-sal. This results into exception at module factory in case we try to register dataChangeListeners.

      Example feature:
      <feature name='odl-openflowplugin-nsf-services' version='${project.version}'
      description="OpenDaylight :: OpenflowPlugin :: NSF :: Services">
      <feature version='${mdsal.version}'>odl-mdsal-broker</feature>
      <feature version='${project.version}'>odl-openflowplugin-nsf-model</feature>
      <bundle>mvn:org.opendaylight.openflowplugin.applications/topology-manager/${project.version}</bundle>
      <bundle>mvn:org.opendaylight.openflowplugin.applications/topology-lldp-discovery/${project.version}</bundle>
      <bundle>mvn:org.opendaylight.openflowplugin.applications/forwardingrules-manager/${project.version}</bundle>
      <bundle>mvn:org.opendaylight.controller/liblldp/${sal.api.version}</bundle>
      <configfile finalname="etc/opendaylight/karaf/30-forwardingrules-manager.xml">mvn:org.opendaylight.openflowplugin.applications/forwardingrules-manager-config/${project.version}/xml/config</configfile>
      </feature>

      Here module factory of forwardingrulesmanager failed because of missing FlowCapableNode augmentation class:
      >feature:install odl-openflowplugin-flow-services-rest
      Exception in thread "pool-36-thread-1" java.lang.IllegalArgumentException: Supplied Instance Identifier InstanceIdentifier

      {targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector]}

      is not valid.
      at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:128)
      at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:29)
      at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:19)
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toYangInstanceIdentifier(BindingNormalizedNodeCodecRegistry.java:87)
      at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalized(BindingToNormalizedNodeCodec.java:64)
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.registerDataChangeListener(AbstractForwardedDataBroker.java:68)
      at org.opendaylight.openflowplugin.applications.topology.manager.DataChangeListenerImpl.<init>(DataChangeListenerImpl.java:50)
      at org.opendaylight.openflowplugin.applications.topology.manager.TerminationPointChangeListenerImpl.<init>(TerminationPointChangeListenerImpl.java:41)
      at org.opendaylight.openflowplugin.applications.topology.manager.FlowCapableTopologyProvider.onSessionInitiated(FlowCapableTopologyProvider.java:56)
      at org.opendaylight.controller.md.sal.binding.util.BindingContextUtils.createProviderContextAndInitialize(BindingContextUtils.java:56)
      at org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker.registerProvider(RootBindingAwareBroker.java:172)
      at org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker.registerProvider(RootBindingAwareBroker.java:160)
      at org.opendaylight.controller.sal.binding.api.AbstractBindingAwareProvider.onBrokerAvailable(AbstractBindingAwareProvider.java:18)
      at org.opendaylight.controller.sal.binding.api.AbstractBrokerAwareActivator$1$1.run(AbstractBrokerAwareActivator.java:34)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)

      Attachments

        Issue Links

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

          Activity

            People

              tony.tkacik@gmail.com Tony Tkacik
              michal.rehak Michal Rehak
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: