The branch, master has been updated
       via  66ebdb91705 ctdb: Fix ctdb startup with inconsistent cluster lock 
settings
      from  1b2b08bb706 mdssvc: support a wider range of years [0000,9999] in 
$time.iso

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 66ebdb917054f4841f583ee21f910a1869712b53
Author: Volker Lendecke <[email protected]>
Date:   Tue Nov 18 10:31:01 2025 +0100

    ctdb: Fix ctdb startup with inconsistent cluster lock settings
    
    ctdb_shutdown_sequence() normally exits. When we end up here, it is
    because we have received a reclock callback twice. We can't handle
    that, we have already removed "state", which would be referenced deep
    in run_start_recovery_event() returning here another time.
    
    The bug is triggered since b84fbd7b3fedc998 introduced a nested event
    loop, making ctdb_shutdown_sequence() return into
    start_recovery_reclock_callback() due to multiple reclock checks being
    triggered somehow (not sure exactly how, but we should not crash under
    any circumstance).
    
    Reproducer: Run one ctdb daemon with cluster lock set, try to start
    another one without cluster lock set.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=15950
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Martin Schwenke <[email protected]>
    
    Autobuild-User(master): Martin Schwenke <[email protected]>
    Autobuild-Date(master): Wed Nov 19 03:04:13 UTC 2025 on atb-devel-224

-----------------------------------------------------------------------

Summary of changes:
 ctdb/server/ctdb_recover.c | 2 ++
 1 file changed, 2 insertions(+)


Changeset truncated at 500 lines:

diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c
index 5a40618487e..18dc250f5ce 100644
--- a/ctdb/server/ctdb_recover.c
+++ b/ctdb/server/ctdb_recover.c
@@ -977,6 +977,8 @@ static void start_recovery_reclock_callback(struct 
ctdb_context *ctdb,
                       local == NULL ? "NULL" : local));
                talloc_free(state);
                ctdb_shutdown_sequence(ctdb, 1);
+               /* In case above returns due to duplicate shutdown */
+               return;
        }
        DEBUG(DEBUG_INFO,
              ("Recovery lock consistency check successful\n"));


-- 
Samba Shared Repository

Reply via email to