thanks, commited Brian S. Vangsgaard([email protected]) on 2015.10.01 13:27:12 +0200: > Hi, > > Problem: > If a client have a state entry in the relayd anchor, and the target > server goes down, the client will be unable to "failover" for 10 sec + > (10 sec - elapsed time since last SLA check). > > There are two issues here, this patch only fix the problem about delayed > (10 seconds) failover. > > When the host fails the SLA check, it will be marked as being down. > However it will not be removed from the achor before the next SLA check. > > Reproduce: > Start relayd with -dvvv, let it run for 10-20 seconds, then make a host > fail its SLA check. Relayd will mark the host as being down when it > reach next SLA check, but the sync_table() will not be called until 10 > sec. later (at the next SLA check). > > Solution: > The logic is already in the code, but right now it only handle the > statistics and set the host as being down. > > Call sync_table() when a host goes from UP to DOWN. > > > Index: pfe.c > =================================================================== > RCS file: /cvs/src/usr.sbin/relayd/pfe.c,v > retrieving revision 1.79.2.1 > diff -u -p -u -p -r1.79.2.1 pfe.c > --- pfe.c 20 Sep 2015 11:20:16 -0000 1.79.2.1 > +++ pfe.c 1 Oct 2015 10:48:59 -0000 > @@ -152,6 +152,7 @@ pfe_dispatch_hce(int fd, struct privsep_ > table->conf.flags |= F_CHANGED; > host->flags |= F_DEL; > host->flags &= ~(F_ADD); > + pfe_sync(); > } > > host->up = st.up; > > > If you need more details or want to fix the scheduler issue, please > contact me :) > > > -- > bsv >
--
