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

Fix aws sdk instrumentation #3373

Merged
merged 3 commits into from
Oct 19, 2023
Merged

Fix aws sdk instrumentation #3373

merged 3 commits into from
Oct 19, 2023

Conversation

JonasKunz
Copy link
Contributor

@JonasKunz JonasKunz commented Oct 19, 2023

What does this PR do?

Closes #3372 .

The private clientConfiguration our instrumentation has been relying on was moved to a superclass, but remained private. Therefore, it is not directly accessible anymore from the Advice code.

Instead of trying to access that field reflectively, which can become problematic with Java modules, I've decided to instrument the constructors instead and "remember" the clientConfiguration.

I've manually checked the source of the oldest 2.x aws sdk and verified that the constructor accepting the clientConfiguration was already present there.

Checklist

  • This is an enhancement of existing features, or a new feature in existing plugins
    • I have updated CHANGELOG.asciidoc
    • I have added tests that prove my fix is effective or that my feature works
    • Added an API method or config option? Document in which version this will be introduced
    • I have made corresponding changes to the documentation

@JonasKunz JonasKunz added the ci:agent-integration Enables agent integration tests in build pipeline label Oct 19, 2023
@JonasKunz JonasKunz added ci:agent-integration Enables agent integration tests in build pipeline and removed ci:agent-integration Enables agent integration tests in build pipeline labels Oct 19, 2023
@JonasKunz JonasKunz marked this pull request as ready for review October 19, 2023 11:08
@JonasKunz JonasKunz requested a review from a team October 19, 2023 11:08
Copy link
Contributor

@jackshirazi jackshirazi left a comment

Choose a reason for hiding this comment

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

I can't immediately see in the dependabot update PR, but I assume there was at least one test failing specifically from the version upgrade?

@JonasKunz
Copy link
Contributor Author

Yes, the AWS integration tests failed.

I also had a stab at adding a test for older versions via TestClassWithDependenciesRunner for AWS, but gave up because there are to many transitive dependencies needing to be included. Therefore I instead did the "manual" verification of checking the presence of the instrumented constructors in older versions.

@mergify mergify bot merged commit d1d76d2 into elastic:main Oct 19, 2023
20 of 26 checks passed
@JonasKunz JonasKunz deleted the aws-update branch October 19, 2023 13:20
v1v added a commit that referenced this pull request Oct 26, 2023
…chmark-otel-in-buildkite

* upstream/main:
  Process otel benchmark (#3384)
  Update tests for Jedis 5 (#3382)
  added entry to community plugins (#3383)
  added capturing s3 otel attributes from lamba S3Event (#3364)
  Bump version.log4j from 2.12.4 to 2.21.0 (#3366)
  Fix aws sdk instrumentation (#3373)
v1v added a commit to v1v/apm-agent-java that referenced this pull request Oct 27, 2023
* 'main' of https://github.com/elastic/apm-agent-java: (35 commits)
  buildkite: opentelemetry+elastic agent overhead benchmark on a weekly basis (elastic#3371)
  ci(action): remove unrequired action (elastic#3387)
  Bump org.springframework.boot:spring-boot-dependencies from 2.7.16 to 3.1.5 (elastic#3380)
  ci(action): archive benchmarks.jar (elastic#3386)
  remove noise (elastic#3385)
  Process otel benchmark (elastic#3384)
  Update tests for Jedis 5 (elastic#3382)
  added entry to community plugins (elastic#3383)
  added capturing s3 otel attributes from lamba S3Event (elastic#3364)
  Bump version.log4j from 2.12.4 to 2.21.0 (elastic#3366)
  Fix aws sdk instrumentation (elastic#3373)
  action: remove leftover from Jenkins (elastic#3368)
  Bump org.apache.logging.log4j:log4j-bom from 2.20.0 to 2.21.0 (elastic#3367)
  Bump io.micrometer:micrometer-core from 1.11.4 to 1.11.5 (elastic#3360)
  Add guard against invalid end timestamps (elastic#3363)
  Added otel to dependabot config, upgraded dependencies (elastic#3359)
  Bump version.byte-buddy from 1.14.8 to 1.14.9 (elastic#3361)
  Fix off-by-one error in tests which effectively disabled recycling validation (elastic#3357)
  Fix multiple spans being created for HTTPUrlConnection HEAD requests (elastic#3353)
  Bump org.ow2.asm:asm-tree from 9.5 to 9.6 (elastic#3349)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
agent-java ci:agent-integration Enables agent integration tests in build pipeline ready-to-merge
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

new version of awssdk 2.21.0+ breaks aws-sdk instrumentations
2 participants