Skip to content
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

Prevent Net/ReadTimeout error in Ruby 2.6 #751

Merged

Commits on Mar 15, 2018

  1. Prevent Net/ReadTimeout error in Ruby 2.6

    This PR fixes the following build error in Ruby 2.6.0 (ruby-head).
    
    ```console
    $ ruby --version
    ruby 2.6.0dev (2018-03-07 trunk 62693) [x86_64-linux]
    % bundle exec rake
    (snip)
    
      1) Net:HTTP with WebMock when net connect is allowed should make a
      real https request if request is not stubbed
         Failure/Error: response = super(request, nil, &nil)
    
         Net::ReadTimeout:
           Net::ReadTimeout
         Shared Example Group: "allowing and disabling net connect" called
           from ./spec/acceptance/webmock_shared.rb:25
         Shared Example Group: "with WebMock" called from
           ./spec/acceptance/net_http/net_http_spec.rb:10
         # ./lib/webmock/http_lib_adapters/net_http.rb:97:in `block in
           request'
         # ./lib/webmock/http_lib_adapters/net_http.rb:105:in `block in
           request'
         # ./lib/webmock/http_lib_adapters/net_http.rb:137:in
           `start_with_connect_without_finish'
         # ./lib/webmock/http_lib_adapters/net_http.rb:104:in `request'
         # ./spec/acceptance/net_http/net_http_spec_helper.rb:35:in `block
           in http_request'
         # ./lib/webmock/http_lib_adapters/net_http.rb:123:in
           `start_without_connect'
         # ./lib/webmock/http_lib_adapters/net_http.rb:150:in `start'
         # ./spec/acceptance/net_http/net_http_spec_helper.rb:34:in
           `http_request'
         #
           ./spec/acceptance/shared/allowing_and_disabling_net_connect.rb:14:in
           `block (4 levels) in <top (required)>'
         # ------------------
         # --- Caused by: ---
         # Net::ReadTimeout:
         #   Net::ReadTimeout
         #   ./lib/webmock/http_lib_adapters/net_http.rb:97:in `block in
           request'
    
    (Errors continue after this)
    ```
    
    https://travis-ci.org/bblimke/webmock/jobs/350668167#L942-L1202
    
    This is because it was changed to use `IO#read_nonblock` based on the
    value of `@rbuf` by the following commit.
    ruby/ruby@b02fc0f
    
    This PR forces the 2nd argument `tmp` of `IO#read_nonblock` to `nil` by using
    `TracePoint`. So this prevents `Net::ReadTimeout` from occurring.
    koic committed Mar 15, 2018
    Configuration menu
    Copy the full SHA
    1cc36e5 View commit details
    Browse the repository at this point in the history