From: Christopher Faulet Date: Mon, 29 Sep 2025 13:40:06 +0000 (+0200) Subject: MEDIUM: peers: Remove commitupdate field on stick-tables X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=30f18154dfda6919d0a90e80f021993d3f31f28b;p=thirdparty%2Fhaproxy.git MEDIUM: peers: Remove commitupdate field on stick-tables This stick-table field was atomically updated with the last update id pushed and dumped on the CLI better never used otherwise. So, it can be removed. --- diff --git a/include/haproxy/stick_table-t.h b/include/haproxy/stick_table-t.h index 618ca0cd6..143236c62 100644 --- a/include/haproxy/stick_table-t.h +++ b/include/haproxy/stick_table-t.h @@ -227,7 +227,6 @@ struct stktable { struct mt_list *pend_updts; /* list of updates to be added to the update sequence tree, one per thread-group */ unsigned int update; /* uses updt_lock */ unsigned int localupdate; /* uses updt_lock */ - unsigned int commitupdate;/* used to identify the latest local updates pending for sync, uses updt_lock */ struct tasklet *updt_task;/* tasklet responsible for pushing the pending updates into the tree */ THREAD_ALIGN(64); diff --git a/src/peers.c b/src/peers.c index b24f791ff..07a9797d1 100644 --- a/src/peers.c +++ b/src/peers.c @@ -1533,7 +1533,7 @@ static inline struct stksess *peer_teach_process_stksess_lookup(struct shared_ta if (!eb) { eb = eb32_first(&st->table->updates); if (!eb || (eb->key == st->last_pushed)) { - st->table->commitupdate = st->last_pushed = st->table->localupdate; + st->last_pushed = st->table->localupdate; return NULL; } } @@ -1543,7 +1543,7 @@ static inline struct stksess *peer_teach_process_stksess_lookup(struct shared_ta * this means we are beyond localupdate. */ if ((eb->key - st->last_pushed) > (st->table->localupdate - st->last_pushed)) { - st->table->commitupdate = st->last_pushed = st->table->localupdate; + st->last_pushed = st->table->localupdate; return NULL; } @@ -1694,16 +1694,6 @@ int peer_send_teachmsgs(struct appctx *appctx, struct peer *p, st->last_pushed = updateid; - if (peer_stksess_lookup == peer_teach_process_stksess_lookup) { - uint commitid = _HA_ATOMIC_LOAD(&st->table->commitupdate); - - while ((int)(updateid - commitid) > 0) { - if (_HA_ATOMIC_CAS(&st->table->commitupdate, &commitid, updateid)) - break; - __ha_cpu_relax(); - } - } - /* identifier may not needed in next update message */ new_pushed = 0; @@ -2963,8 +2953,6 @@ static inline void init_connected_peer(struct peer *peer, struct peers *peers) /* Init cursors */ for (st = peer->tables; st ; st = st->next) { - uint updateid, commitid; - st->last_get = st->last_acked = 0; HA_RWLOCK_WRLOCK(STK_TABLE_UPDT_LOCK, &st->table->updt_lock); /* if st->update appears to be in future it means @@ -2981,15 +2969,6 @@ static inline void init_connected_peer(struct peer *peer, struct peers *peers) st->teaching_origin = st->last_pushed = st->update; st->flags = 0; - updateid = st->last_pushed; - commitid = _HA_ATOMIC_LOAD(&st->table->commitupdate); - - while ((int)(updateid - commitid) > 0) { - if (_HA_ATOMIC_CAS(&st->table->commitupdate, &commitid, updateid)) - break; - __ha_cpu_relax(); - } - HA_RWLOCK_WRUNLOCK(STK_TABLE_UPDT_LOCK, &st->table->updt_lock); } @@ -4329,11 +4308,9 @@ static int peers_dump_peer(struct buffer *msg, struct appctx *appctx, struct pee st->flags, (unsigned long long)st->remote_data); chunk_appendf(&trash, "\n last_acked=%u last_pushed=%u last_get=%u" " teaching_origin=%u update=%u", - st->last_acked, st->last_pushed, st->last_get, - st->teaching_origin, st->update); - chunk_appendf(&trash, "\n table:%p id=%s update=%u localupdate=%u" - " commitupdate=%u refcnt=%u", - t, t->id, t->update, t->localupdate, _HA_ATOMIC_LOAD(&t->commitupdate), t->refcnt); + st->last_acked, st->last_pushed, st->last_get, st->teaching_origin, st->update); + chunk_appendf(&trash, "\n table:%p id=%s update=%u localupdate=%u refcnt=%u", + t, t->id, t->update, t->localupdate, t->refcnt); if (flags & PEERS_SHOW_F_DICT) { chunk_appendf(&trash, "\n TX dictionary cache:"); count = 0;