提交 15323da2 编写于 作者: N Niu Chong 提交者: Jinhui Yuan

fix(actor.cpp): fix the bug that return wrong consumed ctrl Regst in...

fix(actor.cpp): fix the bug that return wrong consumed ctrl Regst in AsyncSendCtrlRegstMsg() (#1031)
上级 508a3507
...@@ -450,20 +450,18 @@ int Actor::ProcessReadableCtrlRegstMsg(const ActorMsg& msg) { ...@@ -450,20 +450,18 @@ int Actor::ProcessReadableCtrlRegstMsg(const ActorMsg& msg) {
void Actor::AsyncSendCtrlRegstMsg() { void Actor::AsyncSendCtrlRegstMsg() {
for (auto& pair : consumed_ctrl_regst_) { for (auto& pair : consumed_ctrl_regst_) {
CHECK(!pair.second.empty()); CHECK(!pair.second.empty());
Regst* regst = pair.second.front();
int32_t returned_regst_num = int32_t returned_regst_num =
regst->regst_desc()->regst_desc_type().ctrl_regst_desc().returned_regst_num(); pair.second.front()->regst_desc()->regst_desc_type().ctrl_regst_desc().returned_regst_num();
CHECK_GE(returned_regst_num, 1); CHECK_GE(returned_regst_num, 1);
if (!pair.second.empty()) {
CHECK_GE(pair.second.size(), returned_regst_num); CHECK_GE(pair.second.size(), returned_regst_num);
while (returned_regst_num--) { while (returned_regst_num--) {
AsyncSendMsg( Regst* regst = pair.second.front();
ActorMsg::BuildRegstMsgToProducer(actor_id_, regst->producer_actor_id(), regst)); AsyncSendMsg(ActorMsg::BuildRegstMsgToProducer(actor_id_, regst->producer_actor_id(), regst));
pair.second.pop_front(); pair.second.pop_front();
} }
if (pair.second.empty()) { --readable_ctrl_regst_desc_cnt_; } if (pair.second.empty()) { --readable_ctrl_regst_desc_cnt_; }
} }
}
for (auto& pair : writeable_produced_ctrl_regst_) { for (auto& pair : writeable_produced_ctrl_regst_) {
CHECK(!pair.second.empty()); CHECK(!pair.second.empty());
Regst* regst = pair.second.front(); Regst* regst = pair.second.front();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册