ctdb-recoverd: Record helper PID in recovery daemon context
authorMartin Schwenke <martin@meltin.net>
Thu, 30 Sep 2021 11:15:56 +0000 (21:15 +1000)
committerAmitay Isaacs <amitay@samba.org>
Mon, 17 Jan 2022 03:43:30 +0000 (03:43 +0000)
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/server/ctdb_recoverd.c

index 408ac68351f7e78667781762216efb8e09f8c2f2..8df309bb601fd7bc93100c80458a964643e074bf 100644 (file)
@@ -263,6 +263,7 @@ struct ctdb_recoverd {
        struct ctdb_node_capabilities *caps;
        bool frozen_on_inactive;
        struct ctdb_recovery_lock_handle *recovery_lock_handle;
+       pid_t helper_pid;
 };
 
 #define CONTROL_TIMEOUT() timeval_current_ofs(ctdb->tunable.recover_timeout, 0)
@@ -899,6 +900,7 @@ static int helper_run(struct ctdb_recoverd *rec, TALLOC_CTX *mem_ctx,
        close(state->fd[1]);
        state->fd[1] = -1;
 
+       rec->helper_pid = state->pid;
        state->done = false;
 
        fde = tevent_add_fd(rec->ctdb->ev, state, state->fd[0],
@@ -927,6 +929,7 @@ static int helper_run(struct ctdb_recoverd *rec, TALLOC_CTX *mem_ctx,
                goto fail;
        }
 
+       rec->helper_pid = -1;
        ctdb_kill(rec->ctdb, state->pid, SIGKILL);
        talloc_free(state);
        return 0;
@@ -938,6 +941,7 @@ fail:
        if (state->fd[1] != -1) {
                close(state->fd[1]);
        }
+       rec->helper_pid = -1;
        if (state->pid != -1) {
                ctdb_kill(rec->ctdb, state->pid, SIGKILL);
        }
@@ -2926,6 +2930,7 @@ static void monitor_cluster(struct ctdb_context *ctdb)
        rec->ctdb = ctdb;
        rec->recmaster = CTDB_UNKNOWN_PNN;
        rec->recovery_lock_handle = NULL;
+       rec->helper_pid = -1;
 
        rec->takeover_run = ctdb_op_init(rec, "takeover runs");
        CTDB_NO_MEMORY_FATAL(ctdb, rec->takeover_run);