[ovs-dev] [PATCH] reconnect.c: Don't transition back to ACTIVE when forced to RECONNECT.

Han Zhou zhouhan at gmail.com
Fri Mar 22 20:31:40 UTC 2019


On Fri, Mar 22, 2019 at 1:29 PM Ben Pfaff <blp at ovn.org> wrote:
>
> On Thu, Mar 21, 2019 at 09:55:15AM -0700, Han Zhou wrote:
> > From: Han Zhou <hzhou8 at ebay.com>
> >
> > Currently, whenever there is activity on the session, the FSM is
> > transitioned to ACTIVE. However, this causes reconnect_force_reconnect()
> > failed to work once there are traffic received from remote after
> > transition to RECONNECT, it will skip the reconnection phase and directly
> > go back to ACTIVE for the old session. This patch fixes it so that
> > when FSM is in RECONNECT state, it doesn't transition back to ACTIVE
> > directly.
> >
> > Signed-off-by: Han Zhou <hzhou8 at ebay.com>
> > ---
> >  lib/reconnect.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/lib/reconnect.c b/lib/reconnect.c
> > index 0f21378..e2901ab 100644
> > --- a/lib/reconnect.c
> > +++ b/lib/reconnect.c
> > @@ -495,7 +495,7 @@ reconnect_connect_failed(struct reconnect *fsm, long long int now, int error)
> >  void
> >  reconnect_activity(struct reconnect *fsm, long long int now)
> >  {
> > -    if (fsm->state != S_ACTIVE) {
> > +    if (fsm->state != S_ACTIVE && fsm->state != S_RECONNECT) {
> >          reconnect_transition__(fsm, now, S_ACTIVE);
> >      }
>
> I think that the only state where this is useful is S_IDLE.  Would
> 'fsm->state == S_IDLE' be a better test?

Agree! It will be more accurate. I will send v2.


More information about the dev mailing list