|
|
|
@ -350,14 +350,8 @@ static void request_matcher_kill_requests(grpc_exec_ctx* exec_ctx, |
|
|
|
|
grpc_error* error) { |
|
|
|
|
requested_call* rc; |
|
|
|
|
for (size_t i = 0; i < server->cq_count; i++) { |
|
|
|
|
/* Here we know:
|
|
|
|
|
1. no requests are being added (since the server is shut down) |
|
|
|
|
2. no other threads are pulling (since the shut down process is single |
|
|
|
|
threaded) |
|
|
|
|
So, we can ignore the queue lock and just pop, with the guarantee that a |
|
|
|
|
NULL returned here truly means that the queue is empty */ |
|
|
|
|
while ((rc = (requested_call*)gpr_mpscq_pop( |
|
|
|
|
&rm->requests_per_cq[i].queue)) != nullptr) { |
|
|
|
|
while ((rc = (requested_call*)gpr_locked_mpscq_pop( |
|
|
|
|
&rm->requests_per_cq[i])) != nullptr) { |
|
|
|
|
fail_call(exec_ctx, server, i, rc, GRPC_ERROR_REF(error)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|