diff --git a/src/link_manager/LinkManagerStateMachineActiveStandby.cpp b/src/link_manager/LinkManagerStateMachineActiveStandby.cpp index be9c41b..08be9e2 100644 --- a/src/link_manager/LinkManagerStateMachineActiveStandby.cpp +++ b/src/link_manager/LinkManagerStateMachineActiveStandby.cpp @@ -475,9 +475,7 @@ void ActiveStandbyStateMachine::handleStateChange(LinkProberEvent &event, link_p mStandbyUnknownUpCount = 0; - if (mOscillationTimerAlive) { - cancelOscillationTimer(); - } + tryCancelOscillationTimerIfAlive(); } if (state == link_prober::LinkProberState::Label::Standby) { @@ -485,9 +483,7 @@ void ActiveStandbyStateMachine::handleStateChange(LinkProberEvent &event, link_p mActiveUnknownUpCount = 0; - if (mOscillationTimerAlive) { - cancelOscillationTimer(); - } + tryCancelOscillationTimerIfAlive(); } CompositeState nextState = mCompositeState; @@ -548,9 +544,7 @@ void ActiveStandbyStateMachine::handleStateChange(MuxStateEvent &event, mux_stat mStandbyUnknownUpCount = 0; } - if (state == mux_state::MuxState::Label::Standby && mOscillationTimerAlive) { - cancelOscillationTimer(); - } + tryCancelOscillationTimerIfAlive(); updateMuxLinkmgrState(); } @@ -593,9 +587,7 @@ void ActiveStandbyStateMachine::handleStateChange(LinkStateEvent &event, link_st mWaitStandbyUpBackoffFactor = 1; mUnknownActiveUpBackoffFactor = 1; - if (mOscillationTimerAlive) { - cancelOscillationTimer(); - } + tryCancelOscillationTimerIfAlive(); } else { mStateTransitionHandler[ps(nextState)][ms(nextState)][ls(nextState)](nextState); } @@ -1091,15 +1083,17 @@ void ActiveStandbyStateMachine::startOscillationTimer() } // -// ---> cancelOscillationTimer(); +// ---> tryCancelOscillationTimerIfAlive(); // -// cancel the oscillation timer +// cancel the oscillation timer if it is alive // -void ActiveStandbyStateMachine::cancelOscillationTimer() +void ActiveStandbyStateMachine::tryCancelOscillationTimerIfAlive() { - MUXLOGINFO(boost::format("%s: cancel the oscillation timer") % mMuxPortConfig.getPortName()); - mOscillationTimerAlive = false; - mOscillationTimer.cancel(); + if (mOscillationTimerAlive) { + MUXLOGINFO(boost::format("%s: cancel the oscillation timer") % mMuxPortConfig.getPortName()); + mOscillationTimerAlive = false; + mOscillationTimer.cancel(); + } } // diff --git a/src/link_manager/LinkManagerStateMachineActiveStandby.h b/src/link_manager/LinkManagerStateMachineActiveStandby.h index ee3b8be..c1b1d58 100644 --- a/src/link_manager/LinkManagerStateMachineActiveStandby.h +++ b/src/link_manager/LinkManagerStateMachineActiveStandby.h @@ -465,13 +465,13 @@ class ActiveStandbyStateMachine: public LinkManagerStateMachineBase, void startOscillationTimer(); /** - *@method cancelOscillationTimer + *@method tryCancelOscillationTimerIfAlive * - *@brief cancel the oscillation timer + *@brief cancel the oscillation timer if it is alive * *@return none */ - inline void cancelOscillationTimer(); + inline void tryCancelOscillationTimerIfAlive(); /** *@method handleOscillationTimeout