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: Calculate correct Content-Length in requests to agent #4734

Conversation

watson
Copy link
Collaborator

@watson watson commented Sep 27, 2024

If the payload being sent to the agent contained any two-or-more-byte characters, the calculation would be incorrect because str.length returns the number of characters and not the number of bytes in the string.

If the payload was JSON, this would make it malformed and the receiver would not be able to parse it (as it would be missing one or more bytes from the end of the payload).

@watson watson requested a review from a team as a code owner September 27, 2024 13:08
Copy link
Collaborator Author

watson commented Sep 27, 2024

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @watson and the rest of your teammates on Graphite Graphite

@watson watson force-pushed the watson/09-27-fix_calculate_correct_content-length_in_requests_to_agent branch from 8466a6b to adcc9fe Compare September 27, 2024 13:09
@watson watson self-assigned this Sep 27, 2024
Copy link

github-actions bot commented Sep 27, 2024

Overall package size

Self size: 7.19 MB
Deduped: 62.59 MB
No deduping: 62.87 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.1.1 | 18.67 MB | 18.68 MB | | @datadog/native-iast-taint-tracking | 3.1.0 | 12.27 MB | 12.28 MB | | @datadog/pprof | 5.3.0 | 9.85 MB | 10.22 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.4.1 | 2.14 MB | 2.23 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 2.0.0 | 898.77 kB | 1.3 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | jsonpath-plus | 9.0.0 | 580.4 kB | 1.03 MB | | import-in-the-middle | 1.11.0 | 110.74 kB | 824.21 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | lru-cache | 7.14.0 | 74.95 kB | 74.95 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@watson watson enabled auto-merge (squash) September 27, 2024 13:12
@pr-commenter
Copy link

pr-commenter bot commented Sep 27, 2024

Benchmarks

Benchmark execution time: 2024-09-27 15:04:25

Comparing candidate commit ae2e7e9 in PR branch watson/09-27-fix_calculate_correct_content-length_in_requests_to_agent with baseline commit 754abe0 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 260 metrics, 6 unstable metrics.

@watson watson force-pushed the watson/09-27-fix_calculate_correct_content-length_in_requests_to_agent branch 5 times, most recently from b81d788 to ae2e7e9 Compare September 27, 2024 13:57
If the payload being sent to the agent contained any two-or-more-byte
characters, the calculation would be incorrect because `str.length`
returns the number of characters and not the number of bytes in the
string.

If the payload was JSON, this would make it malformed and the receiver
would not be able to parse it (as it would be missing one or more bytes
from the end of the payload).
@watson watson force-pushed the watson/09-27-fix_calculate_correct_content-length_in_requests_to_agent branch from ae2e7e9 to b471733 Compare September 27, 2024 14:06
Copy link
Member

@tlhunter tlhunter left a comment

Choose a reason for hiding this comment

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

Is this something we should benchmark?

@watson watson merged commit 7f49451 into master Sep 27, 2024
194 checks passed
@watson watson deleted the watson/09-27-fix_calculate_correct_content-length_in_requests_to_agent branch September 27, 2024 16:18
@watson
Copy link
Collaborator Author

watson commented Sep 29, 2024

Not sure what you're referring to? Do you mean benchmarking the difference between str.length and Buffer.byteLength(str)? That wouldn't make any sense IMO as there's no alternative. Also, I'm sure this isn't going to change anything in regards to performance.

juan-fernandez pushed a commit that referenced this pull request Sep 30, 2024
If the payload being sent to the agent contained any two-or-more-byte
characters, the calculation would be incorrect because `str.length`
returns the number of characters and not the number of bytes in the
string.

If the payload was JSON, this would make it malformed and the receiver
would not be able to parse it (as it would be missing one or more bytes
from the end of the payload).
juan-fernandez pushed a commit that referenced this pull request Sep 30, 2024
If the payload being sent to the agent contained any two-or-more-byte
characters, the calculation would be incorrect because `str.length`
returns the number of characters and not the number of bytes in the
string.

If the payload was JSON, this would make it malformed and the receiver
would not be able to parse it (as it would be missing one or more bytes
from the end of the payload).
juan-fernandez pushed a commit that referenced this pull request Oct 1, 2024
If the payload being sent to the agent contained any two-or-more-byte
characters, the calculation would be incorrect because `str.length`
returns the number of characters and not the number of bytes in the
string.

If the payload was JSON, this would make it malformed and the receiver
would not be able to parse it (as it would be missing one or more bytes
from the end of the payload).
juan-fernandez pushed a commit that referenced this pull request Oct 1, 2024
If the payload being sent to the agent contained any two-or-more-byte
characters, the calculation would be incorrect because `str.length`
returns the number of characters and not the number of bytes in the
string.

If the payload was JSON, this would make it malformed and the receiver
would not be able to parse it (as it would be missing one or more bytes
from the end of the payload).
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.

2 participants