Uploaded image for project: 'yangtools'
  1. yangtools
  2. YANGTOOLS-1276

MandatoryLeafEnforcer fails when faced with augmentations

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Medium
    • Resolution: Done
    • 6.0.6, 7.0.1, 5.0.10
    • 8.0.0
    • parser
    • None

    Description

      In case a mandatory leaf was added to node via augmentation, the MandatoryLeafEnforcer fails to find it. It is aware of the existance of the mandatory leaf, but only searches through the direct children of the node. This leads to "missing mandatory descendant" exception, as shown below:

      java.lang.IllegalArgumentException: Node (http://org/openroadm/service?revision=2020-05-29)resource is missing mandatory descendant /(http://org/openroadm/service?revision=2020-05-29)type
      at com.google.common.base.Preconditions.checkArgument(Preconditions.java:441) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.MandatoryLeafEnforcer.enforceOnData(MandatoryLeafEnforcer.java:57) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.CaseEnforcer$EnforcingMandatory.enforceOnTreeNode(CaseEnforcer.java:43) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.ChoiceModificationStrategy.enforceCases(ChoiceModificationStrategy.java:130) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.ChoiceModificationStrategy.optionalVerifyValueChildren(ChoiceModificationStrategy.java:102) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:126) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:153) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:118) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:153) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:118) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:153) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:118) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:153) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:118) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:153) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.ModifiedNode.seal(ModifiedNode.java:288) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractReadyIterator.process(AbstractReadyIterator.java:47) ~[?:?]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.ready(InMemoryDataTreeModification.java:298) ~[?:?]
      at org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction.ready(SnapshotBackedWriteTransaction.java:151) ~[?:?]
      at org.opendaylight.controller.cluster.datastore.LocalTransactionFactoryImpl.onTransactionReady(LocalTransactionFactoryImpl.java:86) ~[?:?]
      at org.opendaylight.controller.cluster.datastore.LocalTransactionContext.ready(LocalTransactionContext.java:100) ~[?:?]
      at org.opendaylight.controller.cluster.datastore.LocalTransactionContext.directCommit(LocalTransactionContext.java:112) ~[?:?]
      at org.opendaylight.controller.cluster.datastore.TransactionProxy.getDirectCommitFuture(TransactionProxy.java:334) ~[?:?]
      at org.opendaylight.controller.cluster.datastore.TransactionProxy.createSingleCommitCohort(TransactionProxy.java:321) ~[?:?]
      at org.opendaylight.controller.cluster.datastore.TransactionProxy.ready(TransactionProxy.java:286) ~[?:?]
      at org.opendaylight.controller.cluster.datastore.TransactionProxy.ready(TransactionProxy.java:61) ~[?:?]
      at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.commit(AbstractDOMBrokerWriteTransaction.java:140) ~[?:?]
      at org.opendaylight.mdsal.binding.dom.adapter.BindingDOMWriteTransactionAdapter.commit(BindingDOMWriteTransactionAdapter.java:70) ~[?:?]
      at com.fujitsu.fnc.sdnfw.odlutils.debug.impl.ReadWriteTransactionDebugWrapper.commit(ReadWriteTransactionDebugWrapper.java:255) ~[?:?]
      at com.fujitsu.fnc.mlpce.fibertail.provider.FiberTailProviderImpl.commitTransaction(FiberTailProviderImpl.java:18451) ~[?:?]
      at com.fujitsu.fnc.mlpce.fibertail.provider.FiberTailProviderImpl.openroadmServiceActivate(FiberTailProviderImpl.java:16382) ~[?:?]
      at com.fujitsu.fnc.mlpce.fibertail.provider.FiberTailProviderImpl$AttServiceActivator.run(FiberTailProviderImpl.java:18692) ~[?:?]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
      at java.lang.Thread.run(Thread.java:834) [?:?]
      

      Attachments

        Issue Links

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

          Activity

            People

              tibor.kral Tibor Král
              tibor.kral Tibor Král
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: