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: programmatic url and headers take precedence in metric exporters… #4334

Merged
merged 9 commits into from
Dec 6, 2023

Conversation

Vunovati
Copy link
Contributor

@Vunovati Vunovati commented Nov 30, 2023

… (#2370)

Which problem is this PR solving?

Exporters are not respecting the documented behaviour (link) when it comes to headers.

Settings configured programmatically take precedence over environment variables. Per-signal environment variables take precedence over non-per-signal environment variables.

This MR solves the problem for the metrics exporters only. I can expand the scope of the PR to include other signals too.

I believe this is the expected behaviour for all the exporters (for traces and logs too) and is in the docs for most of them.

It is not explicitly stated in exporter-logs-otlp-proto, but I believe it should've been for consistency.

Partially addresses #2370

Short description of the changes

override OTEL_EXPORTER_OTLP_METRICS_HEADERS and OTEL_EXPORTER_OTLP_HEADERS with config.headers supplied to OTLPMetricExporter

Applied to:

  • opentelemetry-exporter-metrics-otlp-grpc
  • opentelemetry-exporter-metrics-otlp-proto
  • opentelemetry-exporter-metrics-otlp-http

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

Added additional tests testing that the programmatic settings take precedence.

  • for headers
  • for url, which was already working per spec but was not covered with unit tests

Checklist:

  • Followed the style guidelines of this project
  • Unit tests have been added
  • Documentation has been updated

@Vunovati Vunovati requested a review from a team November 30, 2023 08:12
Copy link

codecov bot commented Nov 30, 2023

Codecov Report

Merging #4334 (ceaa3e4) into main (104a5e8) will increase coverage by 0.01%.
The diff coverage is 100.00%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4334      +/-   ##
==========================================
+ Coverage   92.20%   92.21%   +0.01%     
==========================================
  Files         332      332              
  Lines        9443     9446       +3     
  Branches     2000     2003       +3     
==========================================
+ Hits         8707     8711       +4     
+ Misses        736      735       -1     
Files Coverage Δ
...porter-metrics-otlp-grpc/src/OTLPMetricExporter.ts 93.75% <100.00%> (+0.20%) ⬆️
...-otlp-http/src/platform/node/OTLPMetricExporter.ts 100.00% <100.00%> (ø)
...orter-metrics-otlp-proto/src/OTLPMetricExporter.ts 100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes

@Vunovati
Copy link
Contributor Author

Vunovati commented Dec 6, 2023

@seemk, seems like your approval was not enough. Is there someone else who can do an additional review?

Copy link
Member

@pichlermarc pichlermarc left a comment

Choose a reason for hiding this comment

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

Hi @Vunovati, thanks for your contribution. 🙂
This looks like the correct order to me - please feel free to take care of this in the other signals exporters as well.

I think it's important to keep tracking the issue until it is fixed in all exporters, I'll unlink #2370 for now so that it does not get auto-closed when this PR merges.

@Vunovati
Copy link
Contributor Author

Vunovati commented Dec 6, 2023

Hi @Vunovati, thanks for your contribution. 🙂 This looks like the correct order to me - please feel free to take care of this in the other signals exporters as well.

I think it's important to keep tracking the issue until it is fixed in all exporters, I'll unlink #2370 for now so that it does not get auto-closed when this PR merges.

Sure, I intend to fix other signals as well in a separate PR.

@pichlermarc pichlermarc merged commit 4daa264 into open-telemetry:main Dec 6, 2023
20 checks passed
dyladan added a commit that referenced this pull request Dec 13, 2023
* Add Trent to approvers (#4311)

* chore(renovate): require dashboard approval for lerna updates (#4276)

* chore(ci): install semver globally to speed up "peer-api" workflow (#4270)

Closes: #4242

* fix(ci): remove token setup via environment variable from .npmrc (#4329)

* fix(instrumentation-http): resume responses when there is no response listener

Fixes a memory leak where unhandled response bodies pile up in node 20

* feat: add script to update changelogs on release preparation (#4315)

* feat: add script to update changelogs on releases

* fix: address comments

* Apply suggestions from code review

Co-authored-by: Trent Mick <trentm@gmail.com>

* fix: apply suggestions from code review

* fix: use packageJson.version instead of version

---------

Co-authored-by: Trent Mick <trentm@gmail.com>

* Fix event name

* test: make rawRequest HTTP-compliant

* Add node 20 to test matrix

* Enable old hash functions on 20

* Fix esm handling for iitm node 20

* Use err.code to make test more reliable

* Changelog

* nit: single import

* Remove unused files

* Add v20 to supported runtimes

* ci: add npm cache in actions/setup-node (#4271)

* feat(sdk-logs): add droppedAttributesCount field to ReadableLogRecord (#4289)

* feat(sdk-logs): add droppedAttributesCount field to ReadableLogRecord

* chore: check droppedAttributesCount value in test case

* feat(otlp-transformer): make toLogRecord() use ReadableLogRecord.droppedAttributesCount

---------

Co-authored-by: Marc Pichler <marc.pichler@dynatrace.com>

* fix(api-logs): allow passing in TimeInput for LogRecord (#4345)

* fix: allow passing in TimeInput for LogRecord

* chore: update changelog

* fix: programmatic url and headers take precedence in metric exporters… (#4334)

* fix: programmatic url and headers take precedence in metric exporters (#2370)

* chore: adjust grpc exporter metrics test

* chore(changelog): update changelog

* fix(instrumentation-http): do not mutate given headers object for outgoing http requests (#4346)

Fixes: open-telemetry/opentelemetry-js-contrib#1609

* chore(deps): update actions/stale action to v9 (#4353)

* fix(deps): update dependency import-in-the-middle to v1.6.0 (#4357)

* chore(deps): update all patch versions (#4306)

* chore(ci): use node 20 in lint workflow (#4359)

* chore(deps): update dependency linkinator to v6 (#4237)

* fix(otlp-exporter-base): decrease default concurrency limit to 30 (#4211)

* fix(otlp-exporter-base): decrease concurrency limit to 30

* fix(changelog): add changelog entry

* chore(deps): use actions/checkout >4 instead of 4.0.0 exactly (#4361)

---------

Co-authored-by: Marc Pichler <marc.pichler@dynatrace.com>
Co-authored-by: strivly <133362191+strivly@users.noreply.github.com>
Co-authored-by: Trent Mick <trentm@gmail.com>
Co-authored-by: lyzlisa <34400837+lyzlisa@users.noreply.github.com>
Co-authored-by: Hyun Oh <hyunnoh01@gmail.com>
Co-authored-by: Siim Kallas <siimkallas@gmail.com>
Co-authored-by: Vladimir Adamić <441333+Vunovati@users.noreply.github.com>
Co-authored-by: Mend Renovate <bot@renovateapp.com>
rdeavila94 pushed a commit to rdeavila94/opentelemetry-js that referenced this pull request Jan 3, 2024
open-telemetry#4334)

* fix: programmatic url and headers take precedence in metric exporters (open-telemetry#2370)

* chore: adjust grpc exporter metrics test

* chore(changelog): update changelog
Zirak pushed a commit to Zirak/opentelemetry-js that referenced this pull request Sep 14, 2024
open-telemetry#4334)

* fix: programmatic url and headers take precedence in metric exporters (open-telemetry#2370)

* chore: adjust grpc exporter metrics test

* chore(changelog): update changelog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants