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

MandatoryLeafEnforcer fails when faced with augmentations

XMLWordPrintable

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

      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) [?:?]
      

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

              Created:
              Updated:
              Resolved: