]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: peers: Automatically start to learn on local peer
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 24 Apr 2024 08:18:07 +0000 (10:18 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 25 Apr 2024 16:29:57 +0000 (18:29 +0200)
The previous fix (c0b2015aae "BUG/MEDIUM: peers: Don't set
PEERS_F_RESYNC_PROCESS flag on a peer") was made due to lack of knowledge on
the peers. A local peer, when assigned to learn, must start to learn
immediately without sending any request. This happens on reload.

Thus, in this case, the PEER_F_LEARN_PROCESS flag must be set with
PEER_F_LEARN_ASSIGN flag from the sync task.

This patch must only be backported if the above commit is backported.

src/peers.c

index 8331068885f411c6b6bdca4c12f7df90bb1daf00..55af758535c0fec4205276e0f86271eec7c80099 100644 (file)
@@ -3404,7 +3404,7 @@ static void __process_peer_state(struct peers *peers, struct peer *peer)
                        if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
                            !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
                                /* assign local peer for a lesson, consider lesson already requested */
-                               peer->flags |= PEER_F_LEARN_ASSIGN;
+                               peer->flags |= (PEER_F_LEARN_ASSIGN|PEER_F_LEARN_PROCESS);
                                peers->flags |= (PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
                                peers->flags |= PEERS_F_RESYNC_LOCALASSIGN;
                        }