fix(ha-bootstrap): pre-load config before election so node enters with correct config_tag
This commit is contained in:
parent
b8e6404fe2
commit
ad7ea12563
1 changed files with 15 additions and 0 deletions
|
|
@ -75,6 +75,21 @@ int myapp_run(myconf_t* myconf)
|
||||||
iomgr_start(&(c.iomgr));
|
iomgr_start(&(c.iomgr));
|
||||||
vtaskmgr_start(&(c.vtaskmgr));
|
vtaskmgr_start(&(c.vtaskmgr));
|
||||||
|
|
||||||
|
/* Pre-load config from disk if a local config file exists, so that this
|
||||||
|
* node's config_tag is known before election. This allows the freshness gate
|
||||||
|
* in am_i_primary_quorum() (Req 2.4) to work correctly: a node with a valid
|
||||||
|
* local config will win over nodes that have no config (tag=0).
|
||||||
|
* If no config file exists yet, config_version_tag stays 0 and the node will
|
||||||
|
* defer the config fetch to after election via bootstrap_config_if_needed. */
|
||||||
|
{
|
||||||
|
int pre_rc = load_primary_config(&c);
|
||||||
|
if (pre_rc == 0) {
|
||||||
|
INFO("Pre-election config loaded: tag=%016llx",
|
||||||
|
(unsigned long long)c.myconf->config_version_tag);
|
||||||
|
}
|
||||||
|
/* Ignore errors — node may have no config yet (first boot or standby) */
|
||||||
|
}
|
||||||
|
|
||||||
/* Req 3.1–3.4: probe peers for config tags before election so that a node
|
/* Req 3.1–3.4: probe peers for config tags before election so that a node
|
||||||
* joining an existing cluster knows to defer its config fetch to post-election
|
* joining an existing cluster knows to defer its config fetch to post-election
|
||||||
* rather than participating as a first-boot candidate with no config. */
|
* rather than participating as a first-boot candidate with no config. */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue