|
As I observed, when a switch connects to the Lithium version of OpenFlow plugin, plugin sets role by two steps:
step 1 - firstly push a slave role request.
step 2 - Received EOS messages and push a master role request as a response.
I found step 2 failed occasionally, especially when the switch reconnects to the ODL Controller.
The related messages in log is as following :
opendaylight-user@root>2016-06-14 13:48:59,551 | INFO | entLoopGroup-5-3 | SystemNotificationsListenerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | ConnectionEvent: Connection closed by devi
ce, Device:/172.21.77.28:42997, NodeId:null
2016-06-14 13:49:00,344 | INFO | entLoopGroup-5-4 | ConnectionAdapterImpl | 178 - org.opendaylight.openflowjava.openflow-protocol-impl - 0.7.2.Beryllium-SR2 | Hello received / branch
2016-06-14 13:49:00,359 | INFO | entLoopGroup-5-4 | DeviceManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | ConnectionEvent: Device connected to controller, Device:/172.21.7
7.28:42998, NodeId:Uri [_value=openflow:1]
2016-06-14 13:49:00,361 | INFO | entLoopGroup-5-4 | StatisticsManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Schedule Statistics poll for node:Uri [_value=openflow:1]
2016-06-14 13:49:00,361 | DEBUG | entLoopGroup-5-4 | RoleManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Sending new role BECOMESLAVE to device Uri [_value=openflow:1]
2016-06-14 13:49:00,367 | INFO | entLoopGroup-5-4 | SalRoleServiceImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | SetRole called with input:SetRoleInput [_controllerRole=BECOMESLA
VE, _node=NodeRef [_value=KeyedInstanceIdentifier
{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819
.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri [_value=openflow:1]]]]}
], augmentation=[]]
2016-06-14 13:49:00,373 | INFO | entLoopGroup-5-4 | SalRoleServiceImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Requesting state change to BECOMESLAVE
2016-06-14 13:49:00,377 | INFO | entLoopGroup-5-4 | SalRoleServiceImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | RoleChangeTask called on device:openflow:1 OFPRole:BECOMESLAVE
2016-06-14 13:49:00,382 | INFO | entLoopGroup-5-4 | RoleService | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | getGenerationIdFromDevice called for device:openflow:1
2016-06-14 13:49:00,388 | INFO | entLoopGroup-5-4 | RoleContextImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Initialization main candidate for node Uri [_value=openflow:1]
2016-06-14 13:49:00,393 | DEBUG | entLoopGroup-5-4 | RoleContextImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Register candidate for entity Entity{type='openflow', id=/(urn:op
endaylight:params:xml:ns:yang:controller:md:sal:core:general-entity?revision=2015-08-20)entity/entity[
{(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity?revision=2015-08-20)name=openflow:1}
]}
2016-06-14 13:49:00,398 | DEBUG | entLoopGroup-5-4 | RoleManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Notifying registered listeners for role initialization done, no.
of listeners 1
2016-06-14 13:49:00,404 | INFO | entLoopGroup-5-4 | LifecycleConductorImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | initialization phase for node Uri [_value=openflow:1] in role con
text was successful, continuing to next context.
2016-06-14 13:49:00,401 | DEBUG | lt-dispatcher-25 | RoleManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Received EOS message: wasOwner:false isOwner:true hasOwner:true f
or entity type openflow and node > no watching entity, disregarding notification <
2016-06-14 13:49:00,413 | INFO | entLoopGroup-5-4 | RoleService | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | submitRoleChange called for device:Uri [_value=openflow:1], role:
BECOMESLAVE
2016-06-14 13:49:00,414 | DEBUG | lt-dispatcher-25 | RoleManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | OwnershipChange EntityOwnershipChanged [entity=Entity{type='openf
low', id=/(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity?revision=2015-08-20)entity/entity[
{(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity?revision=2015-08-20)name=
openflow:1}
]}, wasOwner=false, isOwner=true, hasOwner=true]
2016-06-14 13:49:00,421 | INFO | entLoopGroup-5-4 | RoleService | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | submitRoleChange onSuccess for device:Uri [_value=openflow:1], ro
le:BECOMESLAVE
2016-06-14 13:49:00,424 | INFO | entLoopGroup-5-4 | RoleManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Role BECOMESLAVE successfully set on device Uri [_value=openflow:
1]
2016-06-14 13:49:00,425 | DEBUG | entLoopGroup-5-4 | RoleManagerImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Notifying registered listeners for role change, no. of listeners
1
2016-06-14 13:49:00,920 | WARN | entLoopGroup-5-4 | DeviceContextImpl | 182 - org.opendaylight.openflowplugin.impl - 0.2.2.Beryllium-SR2 | Error processing port status message: Cannot write into transacti
on.
I guess there exists a race condition between thread entLoopGroup-5-4 and lt-dispatcher-25.
|