net-http2: socket loop thread abort_on_exception (was: Thread Safety)

It appears that NetHttp2 might not be thread-safe.

To try it out, run this concurrent test multiple times, you will probably encounter the error HTTP2::Error::HandshakeError raised inside of the dummy server.

Full failure looks like:

Failures:

  1) Sending sync requests sends multiple GET requests concurrently
     Got 0 failures and 2 other errors:

     1.1) Failure/Error: conn << data

          HTTP2::Error::HandshakeError:
            HTTP2::Error::HandshakeError
          # /Users/roberto/.rvm/gems/ruby-2.3.0@net-http2/gems/http-2-0.8.1/lib/http/2/connection.rb:175:in `receive'
          # ./spec/support/dummy_server.rb:107:in `handle'
          # ./spec/support/dummy_server.rb:48:in `block (3 levels) in listen'

     1.2) Failure/Error: conn << data

          HTTP2::Error::HandshakeError:
            HTTP2::Error::HandshakeError
          # /Users/roberto/.rvm/gems/ruby-2.3.0@net-http2/gems/http-2-0.8.1/lib/http/2/connection.rb:175:in `receive'
          # ./spec/support/dummy_server.rb:107:in `handle'
          # ./spec/support/dummy_server.rb:48:in `block (3 levels) in listen'

Finished in 0.00471 seconds (files took 0.09018 seconds to load)
1 example, 1 failure

Investigation is needed, to see if this is an issue on the dummy server (who cares then) or on the client.

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 27 (13 by maintainers)

Most upvoted comments

Merged and published 0.15.0. Tonight I will add the Apnotic part of it. Thank you for your help.

All looked good in development. I’m now running this live and will report back in a few hours 👍

I understand your concern, that’s why I’ve reopened this issue. If you have suggestions please let me know.