Skip to content

Remove condition variable from chttp2_transport #333

@ctiller

Description

@ctiller

It's used in destroy_stream:

while (t->calling_back) {
gpr_cv_wait(&t->cv, &t->mu, gpr_inf_future);
}

... and this turns out to be a huge source of contention.

It's additionally used in destroy_transport similarly, but I suspect unnecessarily in both cases.

Instead we should arrange reference counting at appropriate layers to ensure these objects survive until a termination event has been sent up the stack, and adjust our guarantees to not call these destroy functions until such events have been observed.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions