[YANGTOOLS-1104] InMemoryDataTree does not support anyxml/anydata node storage Created: 27/May/20  Updated: 27/May/20  Resolved: 27/May/20

Status: Resolved
Project: yangtools
Component/s: data-impl
Affects Version/s: None
Fix Version/s: 4.0.9, 5.0.2, 3.0.12

Type: Bug Priority: Medium
Reporter: Robert Varga Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates
relates to YANGTOOLS-1106 Add support for anydata value streaming Open
relates to YANGTOOLS-1105 Do not tolerate IllegalArgumentExcept... Resolved

 Description   

Attempting to load RFC8639 models and storing choice node in subscriptions results in a failure instantiate the choice strategy node:

 TRACE [pool-11-thread-1] (DataNodeContainerModificationStrategy.java:82) - Failed to instantiate child (urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?revision=2019-09-09)target in container schema EnforcingMandatory{support=NormalizedNodeContainerSupport{requiredClass=interface org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode}, verifyChildren=false, schema=list subscription} children [org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.EmptyLeafEffectiveStatement@49809829, org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.RegularLeafEffectiveStatement@6f343628, org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.RegularLeafEffectiveStatement@2f5449b1, org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.RegularLeafEffectiveStatement@2de8b677, org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.RegularLeafEffectiveStatement@60642233, org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.RegularLeafEffectiveStatement@2e2fcd61, org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.RegularLeafEffectiveStatement@23bb10d4, ChoiceEffectiveStatementImpl[qname=(urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?revision=2019-09-09)target], org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.RegularLeafEffectiveStatement@59f6f6ed, ChoiceEffectiveStatementImpl[qname=(urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?revision=2019-09-09)notification-message-origin], org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.EmptyLeafEffectiveStatement@513db4f4, container receivers]
java.lang.IllegalArgumentException: Not supported schema node type for class org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anydata.RegularAnydataEffectiveStatement
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.from(SchemaAwareApplyOperation.java:62)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.ChoiceModificationStrategy.<init>(ChoiceModificationStrategy.java:61)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.from(SchemaAwareApplyOperation.java:55)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.ChoiceModificationStrategy.<init>(ChoiceModificationStrategy.java:61)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.from(SchemaAwareApplyOperation.java:55)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.ChoiceModificationStrategy.<init>(ChoiceModificationStrategy.java:61)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.from(SchemaAwareApplyOperation.java:55)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.DataNodeContainerModificationStrategy.resolveChild(DataNodeContainerModificationStrategy.java:80)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.DataNodeContainerModificationStrategy.getChild(DataNodeContainerModificationStrategy.java:60)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.recursivelyVerifyStructure(AbstractNodeContainerModificationStrategy.java:159)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.recursivelyVerifyStructure(AbstractNodeContainerModificationStrategy.java:166)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.recursivelyVerifyStructure(AbstractNodeContainerModificationStrategy.java:166)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.mergeIntoModifiedNode(AbstractNodeContainerModificationStrategy.java:278)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.OperationWithModification.merge(OperationWithModification.java:47)
        at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.merge(InMemoryDataTreeModification.java:102)
        at org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction.merge(SnapshotBackedWriteTransaction.java:92)
        at org.opendaylight.controller.cluster.datastore.modification.MergeModification.apply(MergeModification.java:43)
        at org.opendaylight.controller.cluster.datastore.LocalTransactionContext.executeModification(LocalTransactionContext.java:56)
        at org.opendaylight.controller.cluster.datastore.TransactionProxy$2.invoke(TransactionProxy.java:164)
        at org.opendaylight.controller.cluster.datastore.TransactionContextWrapper.maybeExecuteTransactionOperation(TransactionContextWrapper.java:147)
        at org.opendaylight.controller.cluster.datastore.TransactionProxy.executeModification(TransactionProxy.java:161)
        at org.opendaylight.controller.cluster.datastore.TransactionProxy.merge(TransactionProxy.java:146)
        at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.merge(AbstractDOMBrokerWriteTransaction.java:102)

The problem here is that SchemaAwareApplyOperation does not handle the case of anydata/anyxml being handed down to it.


Generated at Wed Feb 07 20:55:12 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.