forked from lei.chen/myxce
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
|
|
@ -1203,6 +1203,17 @@ apply_role:
|
|||
INFO("HA FSM: → CTRL_STANDBY (term=%" PRIu64 ", first_boot=%d)",
|
||||
atomic_load_explicit(&ha->term, memory_order_acquire),
|
||||
is_first_boot);
|
||||
|
||||
/* Trigger async config fetch from primary so standby can load
|
||||
* cluster_config, establish persistent control channel, and
|
||||
* participate in RDHUP failover detection. */
|
||||
#ifndef XCE_TESTING
|
||||
if (c != NULL) {
|
||||
extern int fetch_config_from_primary(cluster_t *c);
|
||||
delay_task_ms(&c->delaymgr, 100, 1,
|
||||
(delay_task_entry_fn_t)fetch_config_from_primary, c);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2123,6 +2134,7 @@ int ha_find_and_connect_to_primary(ha_state_t *ha,
|
|||
ha->voted_for_name, r);
|
||||
ha->primary_ctrl_fd = fd;
|
||||
register_fd_with_iomgr(c, fd);
|
||||
ha_arm_heartbeat_timeout_vtask(ha, c);
|
||||
return fd;
|
||||
}
|
||||
if (fd == -ETIMEDOUT || fd == -EAGAIN) {
|
||||
|
|
@ -2148,6 +2160,7 @@ int ha_find_and_connect_to_primary(ha_state_t *ha,
|
|||
INFO("HA: Tier 2 connected to '%s'", p2->name);
|
||||
ha->primary_ctrl_fd = fd;
|
||||
register_fd_with_iomgr(c, fd);
|
||||
ha_arm_heartbeat_timeout_vtask(ha, c);
|
||||
return fd;
|
||||
}
|
||||
}
|
||||
|
|
@ -2164,6 +2177,7 @@ int ha_find_and_connect_to_primary(ha_state_t *ha,
|
|||
INFO("HA: Tier 3 connected to '%s' after backoff", p3->name);
|
||||
ha->primary_ctrl_fd = fd;
|
||||
register_fd_with_iomgr(c, fd);
|
||||
ha_arm_heartbeat_timeout_vtask(ha, c);
|
||||
return fd;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue