refactor(sampling): move the sampling logic from dd-trace-rs [APMSP-2946]#1927
Conversation
Clippy Allow Annotation ReportComparing clippy allow annotations between branches:
Summary by Rule
Annotation Counts by File
Annotation Stats by Crate
About This ReportThis report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality. |
b244f7c to
c710521
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b244f7c989
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1927 +/- ##
==========================================
+ Coverage 71.88% 72.65% +0.76%
==========================================
Files 437 448 +11
Lines 71152 73570 +2418
==========================================
+ Hits 51150 53451 +2301
- Misses 20002 20119 +117
🚀 New features to boost your workflow:
|
🎉 All green!❄️ No new flaky tests detected 🎯 Code Coverage (details) 🔗 Commit SHA: 89db307 | Docs | Datadog PR Page | Give us feedback! |
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
…ken loss (#215) # What does this PR do? Fixes for issues found in this [PR](DataDog/libdatadog#1927) while moving the sampling code to `libdatadog`. # Motivation Fix all the bugs Co-authored-by: bjorn.antonsson <bjorn.antonsson@datadoghq.com>
06ce6dd to
0b83000
Compare
There was a problem hiding this comment.
Do you know that there's already a rate limiter in libdd-common/src/rate_limiter.rs?
There was a problem hiding this comment.
Nope I didn't. Thanks. I'll look at it.
There was a problem hiding this comment.
It's by the way the limiter PHP uses, and is a sliding window rather than discrete windows.
There was a problem hiding this comment.
I had a dig through the specs for _dd.limit_psr and how it should be reported back to the agent, which is what this rate limiter is implementing, and I can't see how you could do that with the rate limiter in libdd-common.
There was a problem hiding this comment.
But, that's what the rate() function is for on the Limiter trait?
There was a problem hiding this comment.
They are not the same, and the RFC mandates tokenized buckets and not a sliding window.
0b83000 to
f108550
Compare
0bb5943 to
d30a3f2
Compare
d30a3f2 to
ce8315c
Compare
| /// Checks if the given subject matches the glob pattern | ||
| /// The match is case insensitive. | ||
| pub fn matches(&self, subject: &str) -> bool { | ||
| let subject_lower = subject.to_lowercase(); |
There was a problem hiding this comment.
to_lowercase() is going to allocate a new string on every match. Would it be more performant to use eq_ignore_ascii_case() when checking for a match below?
There was a problem hiding this comment.
As far as I can see there is nothing in the RFC that says that it should be ASCII. I'll save this optimization for a follow up PR.
8a9a8ab to
c56620e
Compare
64c8403 to
493fd9e
Compare
493fd9e to
89db307
Compare
|
/merge |
|
View all feedbacks in Devflow UI.
This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
The expected merge time in
|
040260c
into
main
…#1977) # What does this PR do? Optimizes the glob matching and limits the memory taken up by the LRU match cache. # Motivation A follow up PR for bigger performance questions that came up in #1927 as well as bounding the cache memory for the LRU cache that came up in a security review. # How to test the change? Unit tests and benchmarks are in the PR. Co-authored-by: bjorn.antonsson <bjorn.antonsson@datadoghq.com>
# Release proposal for libdd-telemetry and its dependencies This PR contains version bumps based on public API changes and commits since last release. ## libdd-capabilities **Next version:** `2.0.0` **Semver bump:** `major` **Tag:** `libdd-capabilities-v2.0.0` ### Commits - feat(capablities)!: sleep & spawn capabilities (#1873) ## libdd-common **Next version:** `4.1.0` **Semver bump:** `minor` **Tag:** `libdd-common-v4.1.0` ### Commits - refactor(sampling): move the sampling logic from dd-trace-rs [APMSP-2946] (#1927) - feat!: added regex-lite feature (#1939) - fix(libdd-common): crashes caused by `getenv` while retrieving AAS env vars (#1930) ## libdd-capabilities-impl **Next version:** `2.0.0` **Semver bump:** `major` **Tag:** `libdd-capabilities-impl-v2.0.0` ### Commits - feat(capablities)!: sleep & spawn capabilities (#1873) ## libdd-shared-runtime **Next version:** `1.0.0` **Semver bump:** `major` **Tag:** `libdd-shared-runtime-v1.0.0` **Warning:** this is an initial release. Please verify that the version and commits included are correct. ## libdd-telemetry **Next version:** `5.0.0` **Semver bump:** `major` **Tag:** `libdd-telemetry-v5.0.0` ###⚠️ major bump forced due to: - `libdd-common`: ^3.0.2 → ^4.0.0 ### Commits - fix(libdd-telemetry): restore previous Cargo.toml version (#1993) - feat(capablities)!: sleep & spawn capabilities (#1873) - fix(telemetry): avoid trigger loop in telemetry worker (#1950) - feat(telemetry)!: include dependencies and integrations in app-extended-heartbeat (#1962) - fix(crypto): gate libdd-common TLS features in remaining internal crates + add CI guard (#1943) - fix(telemetry): schedule ExtendedHeartbeat on worker start (#1910) - fix(telemetry): skip sending empty payloads (#1894) - feat(sidecar): wire telemetry_extended_heartbeat_interval through SessionConfig (#1882) - chore(telemetry): add session id support (#1817) - ci(libdd-shared-runtime): downgrade version so publish workflow succeeds (#1870) - feat(runtime)!: add shared runtime (#1602) - perf(sidecar)!: Batch ack sending & consumption (#1835) - fix(telemetry): wire up DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL to scheduler (#1824) - feat(capabilities)!: trait architecture http (#1555) - chore(telemetry): use weaker mem ordering for SEQ_ID (#1749) [APMSP-2946]: https://datadoghq.atlassian.net/browse/APMSP-2946?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: iunanua <18325288+iunanua@users.noreply.github.com>
What does this PR do?
Moves the sampling logic from
dd-trace-rsso that it can be reused.Motivation
Reuse all the things.
Additional Notes
Has been tested and benchmarked with the code in
dd-trace-rs.How to test the change?
Unit tests and benchmarks are here.