diff options
author | Sree Kuchibhotla <sreecha@users.noreply.github.com> | 2018-01-30 15:29:27 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-30 15:29:27 -0800 |
commit | ef4df6011019e21f54d7b0cbfc5444b9112168d7 (patch) | |
tree | fe028787d56e11b1b19b944dac62a46de657d762 /src | |
parent | 8d98bf2379c257fbd65b71a6707ef34ca4718da7 (diff) | |
parent | 9f91136fe637d19a46d6e495138d16f7b7c61dba (diff) |
Merge pull request #14217 from sreecha/epollex-fix
Fix an issue in epollex that was causing some workers to get stuck in pollset_work()
Diffstat (limited to 'src')
-rw-r--r-- | src/core/lib/iomgr/ev_epollex_linux.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc index 982612f402..178ebd8977 100644 --- a/src/core/lib/iomgr/ev_epollex_linux.cc +++ b/src/core/lib/iomgr/ev_epollex_linux.cc @@ -1110,6 +1110,16 @@ static grpc_error* pollset_as_multipollable_locked(grpc_pollset* pollset, case PO_EMPTY: POLLABLE_UNREF(pollset->active_pollable, "pollset"); error = pollable_create(PO_MULTI, &pollset->active_pollable); + /* Any workers currently polling on this pollset must now be woked up so + * that they can pick up the new active_pollable */ + if (grpc_polling_trace.enabled()) { + gpr_log(GPR_DEBUG, + "PS:%p active pollable transition from empty to multi", + pollset); + } + static const char* err_desc = + "pollset_as_multipollable_locked: empty -> multi"; + append_error(&error, pollset_kick_all(pollset), err_desc); break; case PO_FD: gpr_mu_lock(&po_at_start->owner_fd->orphan_mu); |