After adding the Ruby instrumentation we noticed many outgoing API calls that use Net::HTTP started to fail.
Doing some research I found the culprit to be this line:
The sample app is a very minimal sinatra app that makes an Net::HTTP.get(uri) call copied from the "GET by URI" example in Net::HTTP's docs but without query parameters.
Problem Description
After adding the Ruby instrumentation we noticed many outgoing API calls that use Net::HTTP started to fail. Doing some research I found the culprit to be this line:
https://github.com/instana/ruby-sensor/blob/master/lib/instana/instrumentation/net-http.rb#L39
If the URI has no query (uri.query is nil) then you get an ArgumentError exception: ArgumentError: bad argument (expected URI object or URI string)
I created a minimal sample app that shows the bug here: https://github.com/fgimenezm/instana_nethttp_bug_sample
The sample app is a very minimal sinatra app that makes an Net::HTTP.get(uri) call copied from the "GET by URI" example in Net::HTTP's docs but without query parameters.
If I start the app with:
Then it works OK:
but if I start the app normally with:
then it throws the exception:
and the log from the app:
Minimal, Complete, Verifiable, Example
Minimal example code in Github: https://github.com/fgimenezm/instana_nethttp_bug_sample
Gemfile.lock
Ruby Version