BUG/MEDIUM: peers: register last acked value as origin receiving a resync req

Receiving a resync request, the origins to start the full sync and
to reset after the full resync are mistakenly computed based on
the last update on the table instead of computed based on the
the last update acked by the node requesting the resync.

It could result in disordered or missing updates pushing to the
requester

This patch sets correctly those origins.

This patch should be backported on all supported branches ( >= 1.6 )
This commit is contained in:
Emeric Brun 2021-04-28 09:49:33 +02:00 committed by Willy Tarreau
parent 2c4ab41816
commit 437e48ad92

View File

@ -2068,7 +2068,7 @@ static inline int peer_treat_awaited_msg(struct appctx *appctx, struct peer *pee
NULL, &msg_head[1], peers->local->id, peer->id);
/* prepare tables for a global push */
for (st = peer->tables; st; st = st->next) {
st->teaching_origin = st->last_pushed = st->table->update;
st->teaching_origin = st->last_pushed = st->update;
st->flags = 0;
}