]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: peers: Remove commitupdate field on stick-tables
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 29 Sep 2025 13:40:06 +0000 (15:40 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 30 Oct 2025 13:17:49 +0000 (14:17 +0100)
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.

include/haproxy/stick_table-t.h
src/peers.c

index 618ca0cd659a81feaf2c60e7619df0169c44f3ec..143236c62fe5dce0f3d1e73cd58efe738667e41f 100644 (file)
@@ -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);
index b24f791ff2811d30686afbf92d903c4f3a3418e2..07a9797d1e69278ac6a9995a40b5c29ee414ff98 100644 (file)
@@ -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;