I'm using mechanize (which uses net-http-persistent) to share a pool of connections. I have a set of proxies (20) that are being reused by multiple threads using mechanize.
With truffleruby (and not with MRI), the error below happens, and it seems it is blocking concurrent connections to the same IP.
Errno::EALREADY: trip_advisor: Failed to open TCP connection to 154.7.232.202:21240 (Operation already in progress - connect(2))
<internal:core> core/errno.rb:54:in `handle_errno'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/truffle/error.rb:82:in `connect_nonblock'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/socket.rb:367:in `__connect_nonblock'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/mri.rb:1274:in `connect_nonblock'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/mri.rb:116:in `connect_internal'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/mri.rb:197:in `connect'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/mri.rb:702:in `block in tcp'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/mri.rb:287:in `each'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/mri.rb:287:in `foreach'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/truffle/socket/mri.rb:692:in `tcp'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/mri/net/http.rb:962:in `connect'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/mri/net/http.rb:943:in `do_start'
/home/braulio/.rvm/rubies/truffleruby-21.3.0/lib/mri/net/http.rb:938:in `start'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/mechanize-2.8.3/lib/mechanize/http/agent.rb:283:in `fetch'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/mechanize-2.8.3/lib/mechanize.rb:465:in `get'
/home/braulio/Projects/olery/Review-collector/lib/review_collector/mechanize.rb:100:in `block in call'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/retriable-3.1.2/lib/retriable.rb:61:in `block in retriable'
<internal:core> core/integer.rb:148:in `times'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/retriable-3.1.2/lib/retriable.rb:56:in `retriable'
... (application closed source part)
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:363:in `run_task'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:352:in `block (3 levels) in create_worker'
<internal:core> core/kernel.rb:407:in `loop'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:335:in `block (2 levels) in create_worker'
<internal:core> core/throw_catch.rb:36:in `catch'
/home/braulio/.rvm/gems/truffleruby-21.3.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:334:in `block in create_worker'
I'm using mechanize (which uses net-http-persistent) to share a pool of connections. I have a set of proxies (20) that are being reused by multiple threads using mechanize.
With truffleruby (and not with MRI), the error below happens, and it seems it is blocking concurrent connections to the same IP.