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

NH-76676: using noop for all possible error from our agent #123

Merged
merged 10 commits into from
Apr 8, 2024

Conversation

xuan-cao-swi
Copy link
Contributor

Description

  1. include noop operation for all our api call
  2. noop operation extends to every potential error
  3. require 'opentelemetry-api' at front, if no opentelemetry-api present, then agent report error and load noop

Test (if applicable)

@xuan-cao-swi xuan-cao-swi requested a review from a team as a code owner April 1, 2024 16:54
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/metadata.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/metadata.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/metadata.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/metadata.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
lib/solarwinds_apm.rb Outdated Show resolved Hide resolved
Copy link
Contributor

@cheempz cheempz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One more batch of comments, getting close thanks @xuan-cao-swi !

lib/solarwinds_apm/noop/api.rb Outdated Show resolved Hide resolved

# OpenTelemetry
module OpenTelemetry
def in_span(*); end
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this actually yield the given block, i.e. application code still gets executied? e.g.

SolarWindsAPM::API.in_span('custom_span') do |span|
   url = URI.parse("http://www.google.ca/")
   req = Net::HTTP::Get.new(url.to_s)
   res = Net::HTTP.start(url.host, url.port) {|http| http.request(req)}
end

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also just noticed the API docstring for in_span return value is probably a typo, please update to clarify what the expected value is.

# === Returns:
# * Objective

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this actually yield the given block, i.e. application code still gets executied? e.g.

No, I thought for noop the return value will be nil. Just checked the noop (api) in_span in otel-ruby, it seems like it will execute the block not just return nil. Will update.

please update to clarify what the expected value is.

in_span (include otel original in_span method) will return the last value of given block. In this case it return Net::HTTPOK, but if I have in_span('custom_span') do |span|; 'abc' end, it will return string. That's why I put objective here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I'd expect a proper no-op to still yield the block, in order to not impact the application code. I updated the docstring in 4995718 because "Objective" isn't a commonly understood terminology in this context IMHO.

test/initest_helper.rb Show resolved Hide resolved
lib/solarwinds_apm/noop/api.rb Outdated Show resolved Hide resolved
lib/solarwinds_apm/noop/api.rb Fixed Show fixed Hide fixed
test/initest_helper.rb Fixed Show fixed Hide fixed
Copy link
Contributor

@cheempz cheempz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for the revisit @xuan-cao-swi!

@xuan-cao-swi xuan-cao-swi merged commit 948f11e into main Apr 8, 2024
12 checks passed
@xuan-cao-swi xuan-cao-swi deleted the NH-76676 branch April 8, 2024 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants