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

Debugging incorrectly-empty responses from self-hosted polyfill-service #2702

Open
mq2thez opened this issue Apr 28, 2022 · 0 comments
Open
Labels
service Relates to an Origami service

Comments

@mq2thez
Copy link

mq2thez commented Apr 28, 2022

Hey folks,

My team runs a self-hosted version of the polyfill-service (v4.46.0) in Google Cloud, and we recently discovered (via Sentry errors) a large number of mobile Safari users not properly getting IntersectionObserver polyfills.

After some investigation in our backend logs, we've discovered a number of these users getting empty responses which contain just:

/* Polyfill service v3.110.1
 * Disable minification (remove `.min` from URL path) for more info */

In my case, I can reproduce this by spoofing a Mobile Safari 14 UA string with curl:

$ curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" "https://www.etsy.com/paula/v3/polyfill.min.js?etsy-v=v3&flags=gated&ua-hash=22566b90142c045298f97c23ce0287c3&features=AbortController%2CArray.from%2CArray.of%2CArray.prototype.@@iterator%2CArray.prototype.copyWithin%2CArray.prototype.fill%2CArray.prototype.find%2CArray.prototype.findIndex%2CArray.prototype.flat%2CArray.prototype.flatMap%2CArray.prototype.includes%2CCustomEvent%2CDOMTokenList.prototype.@@iterator%2CElement.prototype.append%2CElement.prototype.classList%2CElement.prototype.closest%2CElement.prototype.matches%2CElement.prototype.remove%2CElement.prototype.replaceWith%2CIntersectionObserver%2CIntersectionObserverEntry%2CMap%2CNodeList.prototype.@@iterator%2CNodeList.prototype.forEach%2CNumber.Epsilon%2CNumber.MAX_SAFE_INTEGER%2CNumber.MIN_SAFE_INTEGER%2CNumber.isFinite%2CNumber.isInteger%2CNumber.isNaN%2CNumber.isSafeInteger%2CNumber.parseFloat%2CNumber.parseInt%2CObject.assign%2CObject.entries%2CObject.fromEntries%2CObject.getOwnPropertyDescriptors%2CObject.is%2CObject.preventExtensions%2CObject.setPrototypeOf%2CObject.values%2CPromise%2CPromise.prototype.finally%2CRegExp.prototype.flags%2CSet%2CString.fromCodePoint%2CString.prototype.@@iterator%2CString.prototype.anchor%2CString.prototype.codePointAt%2CString.prototype.endsWith%2CString.prototype.includes%2CString.prototype.padEnd%2CString.prototype.padStart%2CString.prototype.repeat%2CString.prototype.startsWith%2CString.raw%2CSymbol%2CSymbol.hasInstance%2CSymbol.isConcatSpreadable%2CSymbol.iterator%2CSymbol.match%2CSymbol.replace%2CSymbol.search%2CSymbol.species%2CSymbol.split%2CSymbol.toPrimitive%2CSymbol.toStringTag%2CSymbol.unscopables%2CURL%2CWeakMap%2CWeakSet%2Cfetch%2Clocation.origin%2CmatchMedia"

/* Polyfill service v3.110.1
 * Disable minification (remove `.min` from URL path) for more info */

According to our backend logs, these no-polyfill responses are being logged as 204 No-Content response codes. I haven't been able to determine what part of the polyfill-service stack would cause a 204 to be served, though I combed through a number of the sub-dependencies.

What's extremely odd about this is that changing our "cache-buster" query param, etsy-v, to a "new" value, like etsy-v=v7 and changing nothing else causes the service to start returning polyfills correctly (for this UA string, I'd expect to get the IntersectionObserver polyfill only). The issue also seems somewhat intermittent -- I can see in our logs that for some requests, the polyfills are served correctly (denoted by the KB size of the response in our logs).

Does anyone have any recommendations on what steps we could take to determine what's going on here? I'm fairly stumped as to what might be causing this, and it's becoming a bit concerning to us that the IntersectionObserver polyfill being missing might just be the tip of the proverbial iceberg in terms of users on older browsers not properly getting polyfills.

@origamiserviceuser origamiserviceuser added this to Backlog in Origami ✨ Apr 28, 2022
@github-actions github-actions bot added the service Relates to an Origami service label Apr 28, 2022
@robertboulton robertboulton removed this from Backlog in Origami ✨ Jul 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
service Relates to an Origami service
Projects
None yet
Development

No branches or pull requests

1 participant