]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb: Fix a stuck cluster lock holder after a delayed leader bcast v4-21-test
authorVolker Lendecke <vl@samba.org>
Wed, 6 Aug 2025 13:28:29 +0000 (15:28 +0200)
committerJule Anger <janger@samba.org>
Mon, 11 Aug 2025 17:21:00 +0000 (17:21 +0000)
If a delayed broadcast by a previous cluster lock holder arrives, the
new legitimate leader will accept this without questioning in
leader_handler(). Without this patch rec->leader will never be
overwritten, and because rec->pnn != rec->leader we'll also never send
out fresh leader broadcasts. And because we hold the cluster lock,
nobody else can step up.

Fix this in the next round of leader broadcast timeout.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=15892
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Autobuild-User(master): Martin Schwenke <martins@samba.org>
Autobuild-Date(master): Thu Aug  7 02:59:20 UTC 2025 on atb-devel-224

(cherry picked from commit 1a7cfd93432a227a972b34e1eb844134173be7b0)

Autobuild-User(v4-21-test): Jule Anger <janger@samba.org>
Autobuild-Date(v4-21-test): Mon Aug 11 17:21:00 UTC 2025 on atb-devel-224

ctdb/server/ctdb_recoverd.c

index 3f71c07d05dea8557fbb7cf4b7c3b3d4a693323e..dfd8a78e325f9e1678be56dedc8505291b81d848 100644 (file)
@@ -1902,6 +1902,7 @@ static void cluster_lock_election(struct ctdb_recoverd *rec)
         * attempt to retake it.  This provides stability.
         */
        if (cluster_lock_held(rec)) {
+               rec->leader = rec->pnn;
                goto done;
        }