fix(ha-config-bootstrap): start iomgr and vtaskmgr before election so vote RPCs are accepted
This commit is contained in:
parent
96df7285da
commit
4e9924e95c
2 changed files with 14 additions and 2 deletions
|
|
@ -1081,8 +1081,13 @@ int cluster_start(cluster_t* c)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
iomgr_start(&(c->iomgr));
|
/* Guard: myapp_run() starts iomgr and vtaskmgr before election so that
|
||||||
vtaskmgr_start(&(c->vtaskmgr));
|
* incoming OP_requestVote RPCs are accepted during the election phase.
|
||||||
|
* Only start here if they were not already started (legacy cluster_init path). */
|
||||||
|
if (c->iomgr.worker == 0)
|
||||||
|
iomgr_start(&(c->iomgr));
|
||||||
|
if (c->vtaskmgr.dispatcher == 0)
|
||||||
|
vtaskmgr_start(&(c->vtaskmgr));
|
||||||
delaymgr_start(&(c->delaymgr));
|
delaymgr_start(&(c->delaymgr));
|
||||||
|
|
||||||
/* Start persistence fsync thread and register WAL hooks */
|
/* Start persistence fsync thread and register WAL hooks */
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,13 @@ int myapp_run(myconf_t* myconf)
|
||||||
vtaskmgr_init(&(c.vtaskmgr), nvcpus);
|
vtaskmgr_init(&(c.vtaskmgr), nvcpus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Req 1.2: start the I/O worker thread so that incoming OP_requestVote RPCs
|
||||||
|
* from peers are accepted and dispatched during the election phase.
|
||||||
|
* Without iomgr_start here, connections queue in the kernel (Recv-Q > 0)
|
||||||
|
* but no thread reads them, causing peers to time out waiting for vote replies. */
|
||||||
|
iomgr_start(&(c.iomgr));
|
||||||
|
vtaskmgr_start(&(c.vtaskmgr));
|
||||||
|
|
||||||
/* 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