fix(election-iomgr-refactor): config replication and RDHUP failover chain
- cluster.c: fix upgradeConfig handler (standbys apply, not primaries) - cluster.c: fix raw_pkt_copy opcode peek (read scalar before capn_free) - config_repl.h: enable CONF_ENABLE_UPGRADE_CONFIG=1 - config_repl.c: use client_ssl_ctx for outgoing config fetch connections - config_repl.c: after config fetch, run cluster_init_phase2 + find_primary - join.c: push config to newly-joined standbys on OPCode_join - myapp.c: schedule fetch_config_from_primary after skipping own election - ha.c: arm heartbeat timeout watchdog after find_and_connect_to_primary
This commit is contained in:
parent
2f5a738b36
commit
fd93997f78
6 changed files with 70 additions and 10 deletions
|
|
@ -252,6 +252,22 @@ int myapp_run(myconf_t *myconf)
|
|||
|
||||
skip_election:;
|
||||
|
||||
/* If we skipped starting our own election (already voted for the winner),
|
||||
* set role to CTRL_STANDBY and trigger config fetch so we can join the cluster. */
|
||||
{
|
||||
ctrl_role_t role = (ctrl_role_t)atomic_load_explicit(&c.ha.role,
|
||||
memory_order_acquire);
|
||||
if (role == CTRL_STANDBY || role == CTRL_INIT) {
|
||||
atomic_store_explicit(&c.ha.role, (int32_t)CTRL_STANDBY,
|
||||
memory_order_release);
|
||||
extern int fetch_config_from_primary(cluster_t *c);
|
||||
/* Use delaymgr one-shot so cluster_run is entered before the
|
||||
* blocking fetch starts (fetch runs in delaymgr worker thread). */
|
||||
delay_task_ms(&c.delaymgr, 200, 1,
|
||||
(delay_task_entry_fn_t)fetch_config_from_primary, &c);
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Step 9: cluster_run ─────────────────────────────────────────────── */
|
||||
|
||||
/* Req 9.4: myapp_run exits into cluster_run within 10ms of startup.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue