Optimize collecting pending block requests (#5829)

* Optimized collecting pending block requests

* Make sure request iterator is consumed
This commit is contained in:
Arkadiy Paronyan
2020-04-30 09:50:08 +02:00
committed by GitHub
parent 48832fedc3
commit fdde90077b
2 changed files with 72 additions and 25 deletions
+6 -3
View File
@@ -1965,7 +1965,7 @@ impl<B: BlockT, H: ExHashT> NetworkBehaviour for Protocol<B, H> {
target: id,
request: r,
};
return Poll::Ready(NetworkBehaviourAction::GenerateEvent(event));
self.pending_messages.push_back(event);
} else {
send_request(
&mut self.behaviour,
@@ -1982,7 +1982,7 @@ impl<B: BlockT, H: ExHashT> NetworkBehaviour for Protocol<B, H> {
target: id,
request: r,
};
return Poll::Ready(NetworkBehaviourAction::GenerateEvent(event));
self.pending_messages.push_back(event);
} else {
send_request(
&mut self.behaviour,
@@ -2000,7 +2000,7 @@ impl<B: BlockT, H: ExHashT> NetworkBehaviour for Protocol<B, H> {
block_hash: r.block,
request: r.request,
};
return Poll::Ready(NetworkBehaviourAction::GenerateEvent(event));
self.pending_messages.push_back(event);
} else {
send_request(
&mut self.behaviour,
@@ -2010,6 +2010,9 @@ impl<B: BlockT, H: ExHashT> NetworkBehaviour for Protocol<B, H> {
GenericMessage::FinalityProofRequest(r))
}
}
if let Some(message) = self.pending_messages.pop_front() {
return Poll::Ready(NetworkBehaviourAction::GenerateEvent(message));
}
let event = match self.behaviour.poll(cx, params) {
Poll::Pending => return Poll::Pending,