[NETCONF-385] Unable to find augmentation/Cannot apply modification to its children Created: 27/Mar/17 Updated: 15/Mar/19 Resolved: 07/Jun/17 |
|
| Status: | Resolved |
| Project: | netconf |
| Component/s: | netconf |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Jan Srnicek | Assignee: | Marek Gradzki |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| Attachments: |
|
| External issue ID: | 8085 |
| Description |
|
While putting following trought netconf <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-2"> <?xml version="1.0" encoding="UTF-8" standalone="no"?> Following error is showed <?xml version="1.0" encoding="UTF-8" standalone="no"?> ]/AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]} does not exist. Cannot apply modification to its children.</error-message> Data create for this transaction /(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces/interface/interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}] /(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite After merging data, this is attempted to be commited as result NodeModification [identifier=(urn:ietf:params:xml:ns:netconf:base:1.0)data, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}], modificationType=TOUCH, childModification={AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}=NodeModification [identifier=AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]}]}]}] ]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}], modificationType=TOUCH, childModification={AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}=NodeModification [identifier=AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]}]}]}]] NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}], modificationType=TOUCH, childModification={AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}=NodeModification [identifier=AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]}]}] "(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface" "NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}], modificationType=TOUCH, childModification={AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}=NodeModification [identifier=AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:ya" key = {YangInstanceIdentifier$NodeIdentifierWithPredicates@10237}"(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}]" "NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}], modificationType=TOUCH, childModification={AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}=NodeModification [identifier=AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]" key = {YangInstanceIdentifier$AugmentationIdentifier@10250}"AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}" "NodeModification [identifier=AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]" key = {YangInstanceIdentifier$NodeIdentifier@10135} "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite"value = {ModifiedNode@10264} "NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]" identifier = {YangInstanceIdentifier$NodeIdentifier@10135} "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite" "ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id, value=2223, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag, value=16, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid, value=12, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address, value=bb:bb:bb:bb:bb:bc, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address, value=aa:aa:aa:aa:aa:ab, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation, value=translate-2-1, attri" children = {ImmutableOffsetMap$Unordered@10133} size = 6 "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id, value=2223, attributes={}}" "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag, value=16, attributes={}}" "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid, value=12, attributes={}}" "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address, value=bb:bb:bb:bb:bb:bc, attributes={}}" "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address, value=aa:aa:aa:aa:aa:ab, attributes={}}" "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation, value=translate-2-1, attributes={}}" As can be seen, all data from augmentaions and augmentation itself is present ,so the error does not make sense |
| Comments |
| Comment by Jan Srnicek [ 27/Mar/17 ] |
|
Attachment models.tar.gz has been added with description: interfaces model |
| Comment by Robert Varga [ 27/Mar/17 ] |
|
We need logs from this one, especially the transaction timing on the data store, as the evidence points towards concurrent removal of the augmentation. |
| Comment by Jan Srnicek [ 28/Mar/17 ] |
|
Full debug logs(everything under org.opendaylight.* and io.fd.*) Btw ,not shure about that concurent modification, the only one client was connected (netconf ssh) |
| Comment by Jan Srnicek [ 28/Mar/17 ] |
|
Attachment full_debug_log.log.tar.gz has been added with description: Debug logs |
| Comment by Robert Varga [ 28/Mar/17 ] |
|
Based on the logs, restored state does not include the augmentation node, after which following two operations are executed: 2017-03-28 07:29:20.593 CEST [netconf-netty-1] DEBUG i.f.h.data.impl.WriteTransaction - WriteTransaction.merge() store=CONFIGURATION, path=/(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces/interface, data=ImmutableMapNode {nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, value=[]}2017-03-28 07:29:20.593 CEST [netconf-netty-1] DEBUG i.f.h.data.impl.WriteTransaction - WriteTransaction.put() store=CONFIGURATION, path=/(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces/interface/interface[ {(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}]/AugmentationIdentifier {childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}/(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, data=ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id, value=2223, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag, value=16, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid, value=12, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address, value=bb:bb:bb:bb:bb:bc, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address, value=aa:aa:aa:aa:aa:ab, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation, value=translate-2-1, attributes={}}], attributes={}} This results in following modification layout: identifier=(urn:ietf:params:xml:ns:netconf:base:1.0)data, modificationType=TOUCH, childModification={ ], modificationType=TOUCH, childModification={ , modificationType=TOUCH, childModification={ i.e. pbb-rewrite leaf is overwritten and the augmentation is assumed to exist – which is consistent with the operations executed and it is clear that DataTree is performing as expected: the modification fails because the augmentation does not exist (which is exactly what the exception reports). This needs to be fixed in honeycomb, for example by issuing a merge on the augmentation before the put operation. |
| Comment by Jan Srnicek [ 18/Apr/17 ] |
|
If i remember, RESTCONF is issuing these kinds of MERGE operations, is there a particular reason why NETCONF is not doing the same thing ? Honeycomb is doing nothing else than delegating operations on underlaying datatree, so i dont think it should be it's responsibility to invoke something that was not directly requested. Also i think it would would introduce quite a lot of overhead if we have to detect if this kind of MERGE is needed. |
| Comment by Marek Gradzki [ 06/Jun/17 ] |
|
In my opinion the issue should be fixed in netconf Here is example of failing test: And here is fix for boron: |
| Comment by Marek Gradzki [ 06/Jun/17 ] |
|
master: https://git.opendaylight.org/gerrit/#/c/58313/ |