From: Volker Lendecke Date: Wed, 6 Aug 2025 13:28:29 +0000 (+0200) Subject: ctdb: Fix a stuck cluster lock holder after a delayed leader bcast X-Git-Tag: samba-4.21.8~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c2be2d30ec7d339fcfeb46c187b4661bbb0700ee;p=thirdparty%2Fsamba.git ctdb: Fix a stuck cluster lock holder after a delayed leader bcast 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 Reviewed-by: Martin Schwenke Autobuild-User(master): Martin Schwenke 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 Autobuild-Date(v4-21-test): Mon Aug 11 17:21:00 UTC 2025 on atb-devel-224 --- diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 3f71c07d05d..dfd8a78e325 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -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; }