Fix AIO-DX/DC no controller active issue

When controller-1 reboot in an AIO-DX/DC setup, mgmt/infra network will
temporarily go down. This is expected. However, SM couldn't determine
the interface going up again when the controller-1 reboot after unlock
the first time.

Add code to reverify the state of down interfaces when heartbeat
message is received.

Closes-Bug: 1809315
Change-Id: I02c9b6bf35539df2d36ad6b665b0a5ce8f2a1c75
Signed-off-by: Bin Qian <bin.qian@windriver.com>
This commit is contained in:
Bin Qian 2019-01-07 10:50:10 -05:00
parent 9cc9ce0a2d
commit 6c93e74230
1 changed files with 16 additions and 4 deletions

View File

@ -316,8 +316,20 @@ void sm_failover_heartbeat_restore( SmFailoverInterfaceT* interface )
}
else if( SM_FAILOVER_INTERFACE_DOWN == state )
{
// need to wait for if up
return;
bool enabled = true;
SmErrorT error = sm_hw_get_if_state(interface->interface_name, &enabled);
if(SM_OKAY != error)
{
DPRINTFE("Couldn't get interface (%s) state. ", interface->interface_name);
}
if(!enabled)
{
// need to wait for if up
return;
}else
{
DPRINTFI("Interface %s is verified as UP after receiving heartbeat.", interface->interface_name);
}
}
if(if_info->set_state(SM_FAILOVER_INTERFACE_OK))
@ -1104,8 +1116,8 @@ void _log_nodes_state()
}
DPRINTFI("Host state %d, I/F state %d, peer I/F state %d",
_node_comm_state,
_peer_if_state,
_host_state
_host_state,
_peer_if_state
);
}
// ****************************************************************************