newrelic / newrelic/newrelic-java-agent

AWS S3 instrumentation reports 2 externals

Open
#1,713 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

2 low priority
Dominant language
Java
Stars
240
Forks
170
Avg merge
3d 2h
Merged PRs (30d)
21

Description

Description

The S3 SDK uses an HTTP library to retrieve data/objects from S3.

The instrumentation module for S3 reports an external whenever it does a request. And the instrumentation for the HTTP library will also report an external, resulting in 2 externals for each S3 request.

image
In the image, the span named s3://nr-downloads-main - S3/listObjects is the external created by the S3 instrumentation.
And the span named https://nr-downloads-main.s3.amazonaws.com - CommonsHttp/execute is the one created by the HTTP library.

Acceptance Criteria

Each request to S3 should only report one external.

Design Consideration/Limitations

One possible solution is to make the S3 tracer a leaf. This way the HTTP instrumentation will not report an external.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the S3 instrumentation module and the HTTP-library instrumentation that create the s3://.../S3/listObjects and https://.../CommonsHttp/execute externals. Trace one S3 request through both instrumentations, then verify that each request reports only one external as specified by the acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, java
Domain
observability-sre
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.