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(xhr): make performance observer work with relative urls #2226

Merged
merged 8 commits into from
Jun 23, 2021

Conversation

mhennoch
Copy link
Contributor

@mhennoch mhennoch commented May 25, 2021

Which problem is this PR solving?

Some minor fixes

  • I see no reason to use url.match, changed it to .test which is faster and get rids of the !! conversion
  • Remove unnecessary slice() as sortResources already slices everything.

with relative urls and minor fixes
@codecov
Copy link

codecov bot commented May 25, 2021

Codecov Report

Merging #2226 (a1b5412) into main (bd2a005) will increase coverage by 0.03%.
The diff coverage is 100.00%.

❗ Current head a1b5412 differs from pull request most recent head 5d5262c. Consider uploading reports for the commit 5d5262c to get more accurate results

@@            Coverage Diff             @@
##             main    #2226      +/-   ##
==========================================
+ Coverage   92.70%   92.74%   +0.03%     
==========================================
  Files         145      145              
  Lines        5184     5182       -2     
  Branches     1060     1059       -1     
==========================================
  Hits         4806     4806              
+ Misses        378      376       -2     
Impacted Files Coverage Δ
packages/opentelemetry-core/src/utils/url.ts 100.00% <100.00%> (ø)
...s/opentelemetry-instrumentation-fetch/src/fetch.ts 96.91% <100.00%> (-0.08%) ⬇️
...emetry-instrumentation-xml-http-request/src/xhr.ts 97.58% <100.00%> (+0.99%) ⬆️
packages/opentelemetry-web/src/utils.ts 94.80% <100.00%> (ø)

Copy link
Member

@obecny obecny left a comment

Choose a reason for hiding this comment

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

lgtm, one thing

@mhennoch mhennoch requested a review from obecny May 26, 2021 19:24
Copy link
Member

@obecny obecny left a comment

Choose a reason for hiding this comment

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

lgtm, thx for changes

Copy link
Member

@johnbley johnbley left a comment

Choose a reason for hiding this comment

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

Good catch, thanks!

@dyladan dyladan added the enhancement New feature or request label Jun 2, 2021
@obecny obecny requested a review from MSNev as a code owner June 3, 2021 20:50
entries.forEach(entry => {
if (
entry.initiatorType === 'xmlhttprequest' &&
entry.name === spanUrl
entry.name === urlNormalizingAnchor.href
Copy link
Contributor

@MSNev MSNev Jun 4, 2021

Choose a reason for hiding this comment

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

Note: This won't work with all IE versions (depending on how it's hosted) as it (IE) can rewrite the URL as http://xxxx:443/yyy (which is just annoying).

For Application Insights we added a helper function that we run everything through to avoid the issue to ensure that all URL's (page and dependency (XHR)) calls get reported as expected. https://github.com/microsoft/ApplicationInsights-JS/blob/master/shared/AppInsightsCommon/src/UrlHelperFuncs.ts#L86-L93

Copy link
Contributor

Choose a reason for hiding this comment

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

And the URL passed into the above function is generated by the same href trick being used here, we just "cache" a couple to avoid recreating new elements everytime.

Copy link
Member

Choose a reason for hiding this comment

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

I'm not sure which versions of IE we support right now ? cc @obecny @dyladan

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sorry was on vacation. Anyways IE doesn't have PerformanceObserver support so this should not be an issue here as this code is never ran in IE. But this .href trick is used elsewhere also so maybe lets create a separate issue to figure it out?

Copy link
Member

Choose a reason for hiding this comment

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

@vmarchaud officially i'm not sure we claim any specific browser support. Unofficially, I think we only really work in IE 11

@MSNev is this a blocker for this PR?

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't believe it's a blocker, and it can be fixed later (if people complain).

And it should be fixed more generally so that any checked / reported URLs don't get logged as http:///domain.xxx:443/ which is the main issue and only becomes a code bug when comparing different (unnormalized) Urls.

@dyladan dyladan merged commit 6fb4fd1 into open-telemetry:main Jun 23, 2021
@dyladan dyladan mentioned this pull request Jun 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants