Fix MNFA timer timeout condition check

A timer module change made in https://review.opendev.org/#/c/698311
introduced a change that makes all unstarted/stopped timers appear
as expired/rung.

A MNFA (Multi Node Failure Avoidance) timeout of zero represents no
timeout and is implemented by not starting a timer for that condition.

However, due to the recent change, that makes the MNFA timer expiry
check succeed immediatly causing MNFA to exit prematurely causing the
issue reported by the Bug reference.

The fix is to condition the timer expiry check with a non-zero MNFA
timeout value.

Test Plan:

PASS: Verify MNFA handling with and without timeout.
PASS: Verify 3 node MNFA handling due to node power cycle
PASS: Verify 2 node MNFA handling and recovery due to cable pull

Change-Id: I97363cd309f786b3d41288667d4378b91e4a0d23
Closes-Bug: 1858216
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
(cherry picked from commit e86d0b9158)
This commit is contained in:
Eric MacDonald 2020-01-03 14:28:28 -05:00
parent be3cf4eeb5
commit 76addb37b2
1 changed files with 2 additions and 2 deletions

View File

@ -41,8 +41,8 @@ int nodeLinkClass::fsm ( struct nodeLinkClass::node * node_ptr )
return FAIL ;
}
/* if the multi-Node-Failure Avoidance timer rang then run its ecovery handler */
if ( mtcTimer_mnfa.ring == true )
/* if the multi-Node-Failure Avoidance timer rang then run its recovery handler */
if (( this->mnfa_timeout != 0 ) && ( mtcTimer_mnfa.ring == true ))
{
mtcTimer_mnfa.ring = false ;
mnfa_exit ( true );