static void proposer_preexecute(struct evproposer* p) { int i; prepare_req pr; /*获得可以发起提案的个数*/ int count = p->preexec_window - proposer_prepared_count(p->state); for(i = 0; i < count; i ++){ /*构建一个prepare_req消息*/ proposer_prepare(p->state, &pr); /*发起一个提案*/ send_prepares(p, &pr); } }
static void proposer_preexecute(struct evproposer* p) { int i; prepare_req pr; int count = p->preexec_window - proposer_prepared_count(p->state); //先进先出队列保存准备实例,队列长128,用一个释放一个,有空间了就把新的加到队列末尾。 if (count <= 0) return; for (i = 0; i < count; i++) { proposer_prepare(p->state, &pr); //发送prepare请求 send_prepares(p, &pr); } paxos_log_debug("Opened %d new instances", count); }
static void proposer_preexecute(struct proposer *p) { int i; paxos_message msg; msg.type = PAXOS_PREPARE; int count = BURST_SIZE - proposer_prepared_count(p); if (count <= 0) return; for (i = 0; i < count; i++) { proposer_prepare(p, &msg.u.prepare); rte_log(RTE_LOG_DEBUG, RTE_LOGTYPE_USER8, "%s Prepare instance %d ballot %d\n", __func__, msg.u.prepare.iid, msg.u.prepare.ballot); send_paxos_message(&msg); } }