Skip to content

http2 compat layer failing  #14925

@akc42

Description

@akc42

I'm running node 8.4.0 with the experimental flag --expose-http2 set and am running a server. Currrently running on my desktop which is linux on Intel

This is a server supporting both the serving of static files via res.stream.respondWithFile() and an api. I am routing using the npm router module.

I am invoking the compat layer (I think) because my server create includes a callback

this.server = require('http2').createSecureServer(certs,async (req,res) => {
...

I have been mainly working on the client side app which is served by this server, which is definitely (when it is running) making an api call every 60 seconds. I frequently reload the whole app (by clicking the browser reload button) which normally causes an error (8) to be omitted on both req and res. I have listeners for both of these errors which just logs them.

I have noticed occassionally that I am not doing much other allowing the client to run that the following error occurs.

internal/http2/compat.js:72
  stream.resume();
        ^

TypeError: Cannot read property 'resume' of undefined
    at Http2ServerRequest.onRequestResume (internal/http2/compat.js:72:9)
    at emitNone (events.js:105:13)
    at Http2ServerRequest.emit (events.js:207:7)
    at resume_ (_stream_readable.js:830:10)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)

I don't think that is the result of any client action by me. Because the reload causes serveral hundred calls for static files to the server (which may respond with a 304) before the regular heartbeat api call gets started.

The browser console log is showing a an initial failure of the regular api call (connection reset) followed by a string of connection refused for each of the subsequent attempts.

The server log shows the api call that failed output a debug message just before a call res.end() (which is the last thing that particular api call does.). So the either the above error happened during res.end() or sometime after it, but before the next request happens.

Metadata

Metadata

Assignees

No one assigned

    Labels

    http2Issues or PRs related to the http2 subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions