[GENIUS-244] CDTCN is getting triggered twice Created: 27/Nov/18 Updated: 28/Nov/18 Resolved: 28/Nov/18 |
|
| Status: | Verified |
| Project: | genius |
| Component/s: | None |
| Affects Version/s: | Fluorine-SR1, Neon |
| Fix Version/s: | Fluorine-SR2, Neon |
| Type: | Bug | Priority: | High |
| Reporter: | Faseela K | Assignee: | Faseela K |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
I am hitting one weird issue in genius, where I see a particular CDTCN being triggered twice. Was having a DEBUG log in the add(), remove() methods of the class below, which is getting printed twice in the CSIT log for the same key add/delete. This is a heavily used DS in genius, and this can lead to serious performance issues. The behavior is same in Fluorine as well as Neon. [Did not check oxygen though] The corresponding yang model at : I am able to reproduce the issue locally with a simply PUT/DELETE request. Step 1 : opendaylight-user@root>feature:install odl-genius-rest Step 2 : Do a PUT at http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/l2vlan-trunk {
"interface": [
{ "enabled": true, "name": "l2vlan-trunk", "odl-interface:l2vlan-mode": "transparent", "odl-interface:parent-interface": "tap8ed70586-6c", "type": "iana-if-type:l2vlan" }
]
}
opendaylight-user@root>log:tail {targetType=interface org.o pendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface, path=[org.opendaylight.yang.gen.v1.urn.ietf.params.xml. ns.yang.ietf.interfaces.rev140508.Interfaces, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface[key=I nterfaceKey\\\\{_name=l2vlan-trunk} ]]}, Interface {getName=l2vlan-trunk, getType=interface org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.typ e.rev170119.L2vlan, isEnabled=true, augmentations= {interface org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan=IfL2v lan , interface org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs=ParentRefs{getParentIn terface=tap8ed70586-6c}}} 10:59:34.969 DEBUG [opendaylight-cluster-data-notification-dispatcher-139] Received Interface Add Event: KeyedInstanceIdentifier{targetType=interface org.o pendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface, path=[org.opendaylight.yang.gen.v1.urn.ietf.params.xml. ns.yang.ietf.interfaces.rev140508.Interfaces, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface[key=I nterfaceKey{_name=l2vlan-trunk} ]]}, Interface{getName=l2vlan-trunk, getType=interface org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.typ e.rev170119.L2vlan, isEnabled=true, augmentations= {interface org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan=IfL2v lan {getL2vlanMode=Transparent} , interface org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs=ParentRefs {getParentIn terface=tap8ed70586-6c}}} |
| Comments |
| Comment by Karthika Panneer [ 27/Nov/18 ] |
|
CSIT Logs : https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/builder-copy-sandbox-logs/528/
|
| Comment by Robert Varga [ 27/Nov/18 ] |
|
I don't think this is an MD-SAL issue, as the logs show CDS is delivering the same notification to four different subscribers:
2018-11-27T12:33:17,109 Sending 1 change notification(s) [
DefaultDataTreeCandidate{
rootPath=/(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=l2vlan-trunk}],
rootNode=RecursiveWriteCandidateNode{
data = ImmutableMapEntryNode{nodeIdentifier=(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=l2vlan-trunk}],
value=[ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)enabled, value=true},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)datapath-node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface, value=tap8ed70586-6c}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)type, value=(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2014-05-08)l2vlan},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)vlan-id, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode, value=transparent}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name, value=l2vlan-trunk}]}
}}]
to listener org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$2$$Lambda$1234/2066369190@2f00b46b
2018-11-27T12:33:17,109 Sending 1 change notification(s) [
DefaultDataTreeCandidate{
rootPath=/(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=l2vlan-trunk}],
rootNode=RecursiveWriteCandidateNode{
data = ImmutableMapEntryNode{
nodeIdentifier=(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=l2vlan-trunk}],
value=[ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)enabled, value=true},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)datapath-node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface, value=tap8ed70586-6c}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)type, value=(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2014-05-08)l2vlan},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)vlan-id, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode, value=transparent}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name, value=l2vlan-trunk}]}}}]
to listener org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$2$$Lambda$1153/947871773@284ec343
2018-11-27T12:33:17,109 Sending 1 change notification(s) [
DefaultDataTreeCandidate{
rootPath=/(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=l2vlan-trunk}],
rootNode=RecursiveWriteCandidateNode{
data = ImmutableMapEntryNode{
nodeIdentifier=(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=l2vlan-trunk}],
value=[ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)enabled, value=true},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)datapath-node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface, value=tap8ed70586-6c}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)type, value=(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2014-05-08)l2vlan},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)vlan-id, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode, value=transparent}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name, value=l2vlan-trunk}]}}}]
to listener org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$2$$Lambda$1153/947871773@74cdf8a
2018-11-27T12:33:17,109 ending 1 change notification(s) [
DefaultDataTreeCandidate{
rootPath=/(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=l2vlan-trunk}],
rootNode=RecursiveWriteCandidateNode{
data = ImmutableMapEntryNode{
nodeIdentifier=(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=l2vlan-trunk}],
value=[ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)enabled, value=true},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)datapath-node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)node-identifier, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)parent-interface, value=tap8ed70586-6c}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)type, value=(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2014-05-08)l2vlan},
ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)vlan-id, (urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode]}, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)l2vlan-mode, value=transparent}]},
ImmutableLeafNode{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name, value=l2vlan-trunk}]
}
}}]
to listener org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$2$$Lambda$1234/2066369190@547b1d6e
|
| Comment by Robert Varga [ 27/Nov/18 ] |
|
k.faseela Are you sure you are not subscribed to the tree twice? |
| Comment by Faseela K [ 27/Nov/18 ] |
|
rovarga : If that is the case, in what circumstance the add notification log ends up twice in the same listener? that too from two different dispatcher threads? |
| Comment by Robert Varga [ 27/Nov/18 ] |
|
At any rate, this is not an MD-SAL bug, it's somewhere between genius, serviceutils and controller. |
| Comment by Robert Varga [ 27/Nov/18 ] |
|
Also, controller should not anonymize listeners, https://git.opendaylight.org/gerrit/78208 prevents that. |
| Comment by Robert Varga [ 27/Nov/18 ] |
|
Each registration is treated independently, so even if you register the same listener object twice, it will be treated as two separate listeners, that is why you are getting a registration handle for each registration. Since each registration is independent, they are dispatched concurrently (if system load allows). |
| Comment by Faseela K [ 27/Nov/18 ] |
|
rovarga : I will just debug this and get back to you.. whether the listener is registered twice. |
| Comment by Faseela K [ 27/Nov/18 ] |
|
rovarga : Thanks for the inputs. Never looked into this aspect, as i never thought two times registration will be treated independently, and the bug was right there. Should I just move this Jira to genius? https://git.opendaylight.org/gerrit/78217
|
| Comment by Robert Varga [ 27/Nov/18 ] |
|
Thanks for confirming, I already moved it. Can you tag the patches with JIRA:, so they get linked here, please? |