Description
This issue is part of a project to move x/net/http2
into std
: #67810
The http2.WriteScheduler
interface type defines a scheduler used to select the order in which data is written to HTTP/2 streams. The Server.NewWriteScheduler
configuration setting selects a write scheduler to use for server connections. Client connections do not permit configuring the write scheduler.
The package includes three implementations of this interface: Round robin (the default), random, and priority. The priority write scheduler is known to be buggy and the HTTP/2 stream prioritization scheme it implements is deprecated; see #58804 (comment).
Support for user-defined write schedulers is used seldom, if ever, and substantially constrains the HTTP/2 implementation.
Users should not need to configure the HTTP/2 implementation at this level. Of the current set of scheduler options, there is a clear correct choice: The round robin scheduler outperforms the random scheduler, and the priority scheduler is buggy and we have no plans to fix it. If we come up with a better scheduler, we should just make it the default. If we do discover a reason for users to configure this, we can and should provide a simpler configuration setting than what exists now.
I propose deprecating the write scheduler selection mechanism, consisting of the following types and functions:
FrameWriteRequest
NewPriorityWriteScheduler
NewRandomWriteScheduler
OpenStreamOptions
PriorityWriteSchedulerConfig
Server.NewWriteScheduler
WriteScheduler
I propose that we add a deprecation notice to these types and functions today, and remove support for them in one year. After removing support, servers will ignore the value of the NewWriteScheduler
field.
Metadata
Metadata
Assignees
Type
Projects
Status