-
Notifications
You must be signed in to change notification settings - Fork 29.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discussion: Exit criteria for bringing http2 out of experimental #19453
Comments
Suggestion:
|
Added... although I made it "modules/applications" because it's more likely to have more deployed applications building on the API than it is to have individual modules. |
|
Added! |
Express is in an interesting position right now on this. This is the furthest along PR expressjs/express#3390. I did some benchmarks last weekend to start proving out a best way forward for that PR, and was planning on spending some time over the next few weeks moving it forward. But if you wait for TBQH, I really want to push
|
hapi supports http/2 push under the underdog module. But my understanding is that framework-level http/2 support is in the med/long-term roadmap. Basically, http/2 works well with hapi today under the compatibility API. |
Would be possible to enable HTTP/2 without having to use a cert and key? I think the answer will be dependant on something deeper, maybe Node core modules, but I really wanted to check and ask for it. |
Yes, however it will not work if you attempt to connect to the server via web browser. See http2.createServer vs http2.createSecureServer and note the comments in the code snippet 😉 |
Adding hapi issue link for reference hapijs/hapi#3584 |
Should the list of userspace modules also include client-side request modules? None of the popular ones ( |
node-fetch is waiting on http2 to have agents, but otherwise there's already a pr open to it with initial support |
Considering that there is no PR in the work for that, or that I didn't know about this requirement, it might be a very long wait. It would be really good to get that implementation going. My idea for that is described in #17746. |
There is no Compatibility layer for the client. We might want to add that, but it was never on-scope for the initial release, and I would be somewhat concerned about making that a requirement for the exit criteria. I wrote https://github.com/mcollina/h2url for that. |
@nodejs/tsc @nodejs/http2 ... at this point, the HTTP/2 API has stablized. There are ecosystem users (most significantly Google's grpc now builds on top of http/2 in core). There have been some major bug fixes. I think we are reasonably close to having http/2 ready to come out of experimental. I'd like to target the end of August for the official switch over. Any objections? Any remaining tasks? |
If we don't have a few modules in CITGM that use http2, we should see about adding a few. |
The current stream and session destroy flow needs to be significantly tightened. There are still a substantial number of bugs. Ideally we would have a better story around the client side request api. Right now it's pretty hard to port over existing libraries and their tests to http2. That's the major stumbling block for express. |
@apapirovski ... Do you have a summary or checklist of the known bugs that are remaining to knock out? |
I think we want to get the contents down of https://github.com/nodejs/node/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Ahttp2+label%3Aconfirmed-bug to 0 |
Also #21440. It also means that those errors are not covered by any Refs: https://coverage.nodejs.org/coverage-1bf42f4777bfc7ce/root/internal/http2/core.js.html |
What do you have in mind? A compatibility mode for the client side as well? Support for a pool of connections/agent-like? |
I've send the PR to add fastify to CITGM: nodejs/citgm#586. |
I'm not sure if we already have it for not, but is adding the GRPC sample to CITGM worth it? |
Looking at coverage.nodejs.org, it seems like there are some code branches that should be covered by tests that aren't, particularly in core.js. Today's status on that file in particular: https://coverage.nodejs.org/coverage-e55bdde92513ecf4/root/internal/http2/core.js.html |
Looking at the status since it was last asked:
Things that may still need addressing are:
Things are looking fairly solid to me at this point. I would like to propose that we remove the 'experimental' warning emitted on the console at this point. We still have some time before we mark it non-experimental in the docs. |
Code coverage is around 95% right now and is impacted by a number of defensive code paths that would be exceedingly difficult to construct even artificial tests for. The fact that some of those paths aren't ever take is actually a good thing test wise ;-) ... There are additional tests that could be added, but the coverage is actually really good in comparison to other modules and the current coverage numbers should not be a blocker to coming out of experimental. I also don't think we should block on the current lack of a better client API. |
I agree that it's time to get http2 out of experimental. It is not a fast moving target anymore and any further issues could and should be fixed with the regular development and release cycle. I personally would say increasing the coverage would still be good though. We might also want to define some last goals if someone still has the feeling something has a rough edge or should be addressed before coming out of experimental. I would like to get the opinion from @apapirovski on this as well. |
I will get a PR opened tonight :)
…On Wed, Aug 22, 2018, 17:16 Ruben Bridgewater ***@***.***> wrote:
I agree that it's time to get http2 out of experimental. It is not a fast
moving target anymore and any further issues could and should be fixed with
the regular development and release cycle.
I personally would say increasing the coverage would still be good though.
We might also want to define some last goals if someone still has the
feeling something has a rough edge or should be addressed before coming out
of experimental.
I would like to get the opinion from @apapirovski
<https://github.com/apapirovski> on this as well.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#19453 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AAa2eRXrYlrgs_FCWqTGsuDVmgWQFyrYks5uTfRWgaJpZM4SwjUl>
.
|
Please look at this #22268 IMO it's a bug. |
I approved the PR for moving out of experimental so that should make opinion clear, but to sum it up: I think there was a good amount of work over the last 3-4 months in making http2 more stable and as such it should now be ready to graduate. At least we don't randomly segfault now ;)
Not sure, perhaps compatibility mode is the answer. Or perhaps this can be done in user land with what we already expose... |
It's out of experimental! |
It's time to start figuring out what are the final steps necessary to bring http2 out of experimental?
Let's build a list.
/cc @nodejs/http2 @nodejs/tsc
EDITED BY TROTT: added test coverage. I took the "let's build a list" as an invitation to edit. Feel free to undo my edit if I'm misunderstood.
EDITED BY OFROBOTS: edited 'citgm' bullet to complete as fastify has been added.
The text was updated successfully, but these errors were encountered: