feat(ha-single-leader-role): remove CTRL_PRIMARY_COMMITTING enum + remaining decls — compiler-enforced (task 5.2)
This commit is contained in:
parent
7f974e766b
commit
93dfc02717
10 changed files with 44 additions and 55 deletions
|
|
@ -60,8 +60,7 @@ typedef enum {
|
|||
CTRL_PRIMARY = 0,
|
||||
CTRL_STANDBY = 1,
|
||||
CTRL_INIT = 2, /* Startup: listener open, awaiting heartbeat or election timeout */
|
||||
CTRL_ELECTING = 3, /* Running quorum election via OP_requestVote */
|
||||
CTRL_PRIMARY_COMMITTING = 4 /* Primary waiting for quorum ACK on config commit */
|
||||
CTRL_ELECTING = 3 /* Running quorum election via OP_requestVote */
|
||||
} ctrl_role_t;
|
||||
|
||||
/* ── Election types ────────────────────────────────────────── */
|
||||
|
|
@ -105,8 +104,8 @@ typedef struct {
|
|||
* watchdog. Set by ha_start_election_async after scheduling the timeout. */
|
||||
void *timeout_ctx; /* election_timeout_ctx_t*; NULL until watchdog scheduled */
|
||||
/* Task 4.1: cluster_t* so ha_elect_evaluate_and_signal can call
|
||||
* cluster_init_phase2(c) and arm the committing timeout watchdog.
|
||||
* NULL in unit tests (c=NULL bypasses phase2 and watchdog arming). */
|
||||
* cluster_init_phase2(c).
|
||||
* NULL in unit tests (c=NULL bypasses phase2). */
|
||||
cluster_t *c;
|
||||
/* Task 6.3: candidate's own LSN/tag, stored unconditionally so that
|
||||
* ha_compute_safe_committed_lsn can use them even for single-node elections
|
||||
|
|
@ -128,7 +127,6 @@ typedef struct {
|
|||
#define HA_DEFAULT_MAX_PROMOTION_RETRIES 5
|
||||
#define HA_DEFAULT_ELECTION_JITTER_MAX_MS 200
|
||||
#define HA_DEFAULT_ELECTION_PRIORITY_STEP_MS 500
|
||||
#define HA_DEFAULT_COMMITTING_TIMEOUT_MS 60000
|
||||
|
||||
typedef struct {
|
||||
uint32_t heartbeat_interval_ms; /* Primary heartbeat send interval (min 2000 ms) */
|
||||
|
|
@ -138,7 +136,6 @@ typedef struct {
|
|||
uint32_t max_promotion_retries; /* Max consecutive failed promotion attempts */
|
||||
uint32_t election_jitter_max_ms; /* random jitter added to election timeout (default 200) */
|
||||
uint32_t election_priority_step_ms; /* extra ms per priority level (default 500) */
|
||||
uint32_t committing_timeout_ms; /* Quorum-ACK deadline for CTRL_PRIMARY_COMMITTING (default 60000) */
|
||||
} ha_config_t;
|
||||
|
||||
/* probe_ctx_t deleted — only used by am_i_primary() (election-iomgr-refactor) */
|
||||
|
|
@ -177,14 +174,12 @@ typedef struct {
|
|||
/* ── New fields added by election-iomgr-refactor spec (Task 2.1) ── */
|
||||
void *client_ssl_ctx; /* SSL_CTX* (TLS_client_method); created in myapp_run */
|
||||
int phase2_done; /* 1 after cluster_init_phase2 runs */
|
||||
_Atomic int repl_ack_count; /* count of standbys that ACKed in COMMITTING state */
|
||||
int n_peers; /* total cluster size (including self), matches raft convention */
|
||||
/* ── New fields added by raft-library spec (Task 6.1) ──────── */
|
||||
raft_state_t raft; /* Raft consensus state (wired in task 6.2) */
|
||||
/* ── New fields added by raft-library spec (Task 6.2) ──────── */
|
||||
cluster_t *raft_c; /* cluster_t* set by ha_start_election_async; used by raft callbacks */
|
||||
void *raft_election_timeout_ctx; /* election_timeout_ctx_t* for cancel (task 6.2) */
|
||||
void *committing_timeout_ctx; /* committing_timeout_ctx_t* for cancel on step-down */
|
||||
/* ── New fields added by ha-heartbeat-liveness spec (Task 1.1) ── */
|
||||
time_t last_activity; /* CLOCK_MONOTONIC seconds of last primary message; 0 = none yet */
|
||||
/* ── New fields added by ha-repl-hardening spec (Task 1.4) ──────── */
|
||||
|
|
@ -376,7 +371,7 @@ ha_repl_action_t ha_evaluate_repl_action(uint64_t standby_tag,
|
|||
* ha_process_standby_state: update per-standby convergence tracking.
|
||||
*
|
||||
* Called on each heartbeat reply from a standby while the primary is in
|
||||
* CTRL_PRIMARY_COMMITTING or CTRL_PRIMARY. Stores the standby's reported
|
||||
* CTRL_PRIMARY. Stores the standby's reported
|
||||
* (config_tag, applied_lsn) and evaluates whether the standby has converged
|
||||
* with the primary's committed state.
|
||||
*
|
||||
|
|
@ -650,7 +645,7 @@ int ha_dispatch_repl_action_for_standby(ha_state_t *ha,
|
|||
* an OP_hello CtrlHelloRequest to each connected standby.
|
||||
* This triggers the existing catch-up replication path in handle_ctrlhello
|
||||
* (Req 7.2). Defined in cluster.c; called from ha_elect_evaluate_and_signal
|
||||
* in the COMMITTING path.
|
||||
* in the post-election path.
|
||||
*/
|
||||
void ha_send_ctrlhello_to_all_standbys(cluster_t *c);
|
||||
|
||||
|
|
@ -668,7 +663,7 @@ extern int (*ha_phase2_hook)(void *c);
|
|||
|
||||
/*
|
||||
* ha_send_ctrlhello_hook: test-only seam for ha_send_ctrlhello_to_all_standbys.
|
||||
* When non-NULL, ha_elect_evaluate_and_signal() calls this in the COMMITTING
|
||||
* When non-NULL, ha_elect_evaluate_and_signal() calls this in the post-election
|
||||
* path instead of the real function (cluster.c not linked in test binary).
|
||||
* Requirements: 7.2.
|
||||
*/
|
||||
|
|
@ -676,7 +671,7 @@ extern int (*ha_send_ctrlhello_hook)(void *c);
|
|||
|
||||
/*
|
||||
* ha_push_config_hook: test-only seam for push_config_to_standbys.
|
||||
* When non-NULL, ha_elect_evaluate_and_signal() calls this in the COMMITTING
|
||||
* When non-NULL, ha_elect_evaluate_and_signal() calls this in the post-election
|
||||
* path instead of the real function. Requirements: 7.1.
|
||||
*/
|
||||
extern int (*ha_push_config_hook)(void *c);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue