[BGPCEP-983] PCEPTopologyDeployerImpl restarts topologies on any update Created: 29/Sep/21  Updated: 21/Nov/21  Resolved: 21/Nov/21

Status: Resolved
Project: bgpcep
Component/s: PCEP
Affects Version/s: Aluminium, Silicon, 0.16.7
Fix Version/s: 0.16.11

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

Issue Links:
Relates
relates to CONTROLLER-2004 EOS gossip propagation takes too long Resolved
relates to BGPCEP-992 Refactor DefaultBgpDeployer Confirmed

 Description   

Our CSIT test suite has started failing on:

https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/bgpcep-csit-1node-userfeatures-all-phosphorus/181/robot-plugin/log.html.gz#s1-s21

which may be caused by slow EOS, but is nevertheless problematic.

Essentially any configuration update to a PCEP topology results in it being dropped and recreated from scratch without ever attempting to update its configuration.



 Comments   
Comment by Robert Varga [ 29/Sep/21 ]

This essentially needs refactoring of https://github.com/opendaylight/bgpcep/blob/master/pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/config/PCEPTopologyDeployerImpl.java#L66-L94 so that there remains the core difference between 'create a topology' and 'update a topology' – the latter should not be touching EOS at all.

Comment by Robert Varga [ 29/Sep/21 ]

So even for simple things like a device's password update:

11:53:18.791       INFO       PUT Request : url=http://10.30.170.73:8181/restconf/config/network-topology:network-topology/topology/pcep-topology/node/10.30.171.119 
 path_url=/restconf/config/network-topology:network-topology/topology/pcep-topology/node/10.30.171.119 
 headers={'User-Agent': 'python-requests/2.19.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '249', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=<node xmlns="urn:TBD:params:xml:ns:yang:network-topology">
    <node-id>10.30.171.119</node-id>
    <session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:config">
        <password>changeme</password>
    </session-config>
</node>
11:53:18.791       INFO       PUT Response : url=http://10.30.170.73:8181/restconf/config/network-topology:network-topology/topology/pcep-topology/node/10.30.171.119 
 status=201, reason=Created 
 body=None 

ends up with the topology disappearing and later appearing:

2021-09-29T09:53:18,786 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | PCEPTopologyDeployerImpl         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | Updating Topology Uri{_value=pcep-topology}
2021-09-29T09:53:18,786 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | PCEPTopologyDeployerImpl         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | Removing Topology Uri{_value=pcep-topology}
2021-09-29T09:53:18,787 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | PCEPTopologyProviderBean         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | Close PCEP Topology Provider Singleton Service pcep-topology-service-group
2021-09-29T09:53:18,788 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | PCEPTopologyProviderBean         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | Close PCEP Topology Provider Singleton Service pcep-topology-service-group
2021-09-29T09:53:18,788 | DEBUG | CommitFutures-11 | ServerSessionManager             | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | Topology KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey{_topologyId=Uri{_value=pcep-topology}}]]} removed
2021-09-29T09:53:18,789 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | ProgrammingServiceImpl           | 261 - org.opendaylight.bgpcep.programming-impl - 0.16.7 | Closing Instruction Queue service pcep-topology-service-group
2021-09-29T09:53:18,789 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | PCEPTopologyDeployerImpl         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | Creating Topology Uri{_value=pcep-topology}
2021-09-29T09:53:18,790 | TRACE | opendaylight-cluster-data-notification-dispatcher-36 | PCEPTopologyDeployerImpl         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | Topology Topology{node={NodeKey{_nodeId=Uri{_value=43.43.43.43}}=Node{nodeId=Uri{_value=43.43.43.43}, augmentation=[PcepNodeConfig{sessionConfig=SessionConfig{password=Rfc2385Key{_value=topsecret}, augmentation=[PcepNodeSyncConfig{speakerEntityIdValue=[1, 2, 3, 4]}]}}]}, NodeKey{_nodeId=Uri{_value=10.30.170.73}}=Node{nodeId=Uri{_value=10.30.170.73}, augmentation=[PcepNodeConfig{sessionConfig=SessionConfig{augmentation=[PcepNodeSyncConfig{speakerEntityIdValue=[1, 2, 3, 4]}]}}]}, NodeKey{_nodeId=Uri{_value=10.30.171.119}}=Node{nodeId=Uri{_value=10.30.171.119}, augmentation=[PcepNodeConfig{sessionConfig=SessionConfig{password=Rfc2385Key{_value=changeme}, augmentation=[]}}]}}, topologyId=Uri{_value=pcep-topology}, topologyTypes=TopologyTypes{augmentation=[TopologyTypes1{topologyPcep=TopologyPcep{augmentation=[]}}]}, augmentation=[PcepTopologyTypeConfig{sessionConfig=SessionConfig{deadTimerValue=120, keepAliveTimerValue=30, listenAddress=IpAddressNoZone{_ipv4AddressNoZone=Ipv4Address{_value=0.0.0.0}}, listenPort=PortNumber{_value=4189}, rpcTimeout=30, augmentation=[]}}]}.
2021-09-29T09:53:18,790 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | DefaultInstructionSchedulerFactory | 261 - org.opendaylight.bgpcep.programming-impl - 0.16.7 | Creating Instruction Scheduler pcep-topology.
2021-09-29T09:53:18,790 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | ProgrammingServiceImpl           | 261 - org.opendaylight.bgpcep.programming-impl - 0.16.7 | Creating Programming Service pcep-topology-service-group.
2021-09-29T09:53:18,791 | INFO  | opendaylight-cluster-data-notification-dispatcher-36 | PCEPTopologyProviderBean         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | PCEP Topology Provider service pcep-topology-service-group registered
2021-09-29T09:53:19,505 | INFO  | opendaylight-cluster-data-akka.actor.default-dispatcher-30 | ContextChainHolderImpl           | 413 - org.opendaylight.openflowplugin.impl - 0.13.0 | Entity ownership change received for node : EntityOwnershipChange [entity=Entity [type=org.opendaylight.mdsal.AsyncServiceCloseEntityType, id=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.Entity, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.Entity[key=EntityKey{_name=pcep-topology-service-group}]]}], state=LOCAL_OWNERSHIP_LOST_NO_OWNER [wasOwner=true, isOwner=false, hasOwner=false], inJeopardy=false]
2021-09-29T09:53:21,239 | DEBUG | pcep-topology-stats-timer | TopologyStatsProviderImpl        | 257 - org.opendaylight.bgpcep.pcep-topology-stats - 0.16.7 | Successfully committed Topology stats update
2021-09-29T09:53:21,585 | INFO  | opendaylight-cluster-data-akka.actor.default-dispatcher-14 | ProgrammingServiceImpl           | 261 - org.opendaylight.bgpcep.programming-impl - 0.16.7 | Instruction Queue service pcep-topology-service-group instantiated
2021-09-29T09:53:21,585 | INFO  | opendaylight-cluster-data-akka.actor.default-dispatcher-15 | ContextChainHolderImpl           | 413 - org.opendaylight.openflowplugin.impl - 0.13.0 | Entity ownership change received for node : EntityOwnershipChange [entity=Entity [type=org.opendaylight.mdsal.AsyncServiceCloseEntityType, id=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.Entity, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.Entity[key=EntityKey{_name=pcep-topology-service-group}]]}], state=LOCAL_OWNERSHIP_GRANTED [wasOwner=false, isOwner=true, hasOwner=true], inJeopardy=false]
2021-09-29T09:53:21,587 | INFO  | opendaylight-cluster-data-akka.actor.default-dispatcher-14 | PCEPTopologyProviderBean         | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | PCEP Topology Provider Singleton Service pcep-topology-service-group instantiated
2021-09-29T09:53:21,590 | INFO  | opendaylight-cluster-data-akka.actor.default-dispatcher-14 | ServerSessionManager             | 255 - org.opendaylight.bgpcep.pcep-topology-provider - 0.16.7 | PCEP Topology pcep-topology created successfully.
Generated at Wed Feb 07 19:14:40 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.