Skip to content
Snippets Groups Projects
Commit 949d0758 authored by Sree Kuchibhotla's avatar Sree Kuchibhotla
Browse files

Correctly fix the case where pollset->kicked_without_poller was missed

parent 5d906568
No related branches found
No related tags found
No related merge requests found
...@@ -603,7 +603,7 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker, ...@@ -603,7 +603,7 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
worker_insert(pollset, worker); worker_insert(pollset, worker);
pollset->begin_refs--; pollset->begin_refs--;
if (worker->kick_state == UNKICKED) { if (worker->kick_state == UNKICKED && !pollset->kicked_without_poller) {
GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker); GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker);
worker->initialized_cv = true; worker->initialized_cv = true;
gpr_cv_init(&worker->cv); gpr_cv_init(&worker->cv);
...@@ -623,10 +623,13 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker, ...@@ -623,10 +623,13 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
} }
*now = gpr_now(now->clock_type); *now = gpr_now(now->clock_type);
} }
if (GRPC_TRACER_ON(grpc_polling_trace)) { if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, "PS:%p BEGIN_DONE:%p kick_state=%s shutdown=%d", pollset, gpr_log(GPR_ERROR,
worker, kick_state_string(worker->kick_state), "PS:%p BEGIN_DONE:%p kick_state=%s shutdown=%d "
pollset->shutting_down); "kicked_without_poller: %d",
pollset, worker, kick_state_string(worker->kick_state),
pollset->shutting_down, pollset->kicked_without_poller);
} }
/* We release pollset lock in this function at a couple of places: /* We release pollset lock in this function at a couple of places:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment