GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — Fix reference-chain nightly flakes and drop their quarantine by jbachorik · Pull Request #899 · DataDog/java-profiler Conversation
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CI Test ResultsRun: #43036053668 | Commit:
Status Overview
Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled Summary: Total: 32 | Passed: 32 | Failed: 0 Updated: 2026-11-11 17:24:37 UTC |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: 0ce265c9ba
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Reliability & Chaos Results✅ All reliability & chaos checks passed Pipeline: https://gitlab.ddbuild.io/DataDog/java-profiler/-/pipelines/149491470 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Fixed in 19eeb3f (addressing general review comment) — verified against the full claim: ddprof-lib/src/main/cpp/referenceChainAnchors.cpp:437-458 — compactLocalAnchors() now iterates only _local_anchor_tags (now a tag->own-class-tag map, referenceChains.h), so the locked scan is O(cap) and the per-slot count() double hash is gone; referenceChainAnchors.cpp:413-423 — a compaction that removes nothing arms LOCAL_ANCHOR_COMPACT_BACKOFF=8 skipped attempts, so a saturated-but-live share no longer pays the scan every pass (pinned by LocalRootAnchorCompactBackoffSkipsNoProgressCompactions). The O(index) vector compaction remains but runs only when entries are actually removed. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Fixed in 19eeb3f (addressing general review comment) — verified against the full claim: ddprof-lib/src/main/cpp/referenceChainAnchors.cpp:362-392 — at a full pending buffer a confirmed container (met at the local cap) evicts the oldest not-yet-confirmed entry via the forward-only _pending_local_evict_cursor, dedup set kept exact; it is dropped only when every parked entry is already a confirmed container (pinned by LocalRootAnchorPendingBufferEvictsForConfirmedContainer). |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Fixed in 19eeb3f (addressing general review comment) — verified against the full claim: ddprof-lib/src/main/cpp/referenceChainAnchors.cpp:641-667 — collection step extracted verbatim into const collectUnclassifiedAnchorClassTags(); ddprof-lib/src/test/cpp/referenceChainsAnchorTests.inc:1167 AnchorShapeReconcileBudgetCapsRequestedClasses parks budget+10 distinct classes and asserts the request is exactly ANCHOR_SHAPE_RECONCILE_BUDGET in order (fails for |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Fixed in 19eeb3f (addressing general review comment) — verified against the full claim: ddprof-lib/src/test/cpp/referenceChainsAnchorTests.inc:1209 AnchorShapeReconcilePrefersPendingHolders — phase 1 asserts a full budget of pending classes is requested with no durable class (fails if loop order is swapped, or if |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Scan-Build Report
Bug Summary
Filter Results by FileReports
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Sorry, something went wrong.
There was an error while loading. Please reload this page.
improveChain/reparent/root-kind upgrades queued a deferred invalidation that drainPendingChainEvents applied as an erase at dump time. If the search then terminated via the canary, nothing could rebuild the erased chains (candidate and discovered state are zeroed, search pain-budget blocked ~11-15s), losing the correlation for the rest of the window - against the restartSearch() contract that resolved chains stay cached across a restart. Split deferred invalidations into EVICT (noise eviction, filter: erased at dump time as before) and REBUILD (path changed, source still live: applied by the BFS-thread poll, which rebuilds the chain from the intact frontier and keeps the old chain if the rebuild fails). Kind is encoded in-band in the existing bounded pending buffers; no new allocation or locks. Reproducer: ReferenceChainsBfsTest.ImprovedPathInvalidationKeepsLeakChainAcrossTerminalReset (fails before, passes after). PROF-16316.
The reference-chain walks are paced by the CPU pain budget; on slow cells the second pass can land late in the tests' dump windows, leaving only the first pass's uncorrelated chains (TL/LeakTag loose variants report out-of-pool or not-found in CI nightlies, PROF-16305). Test-side schedule changes within the existing bounds (no assertion weakened, no retries/skips, static entry caps kept): - cache-leak: growth completes by round 10, rounds 11-16 poll with a small top-up so the BFS drains its frontier backlog and intercepts a leak-tagged payload with slack (<= 36,601 entries, down from 69,001) - failure-only referenceChainDiagnostics() helper appended to the assertNotNull messages of the cache-leak and gc-root tests (debug- instrumented builds only; release returns empty string) - ThreadLocalLeakScenario: keeps full per-round chunk growth (the late-variant correlation needs the whole interception surface; verified on JDK 11) but keeps the filler at a quarter size so pass 0's pain-budget debt is repaid well inside the window - LeakTagCorrelationScenario: front-loaded growth with sparse top-ups, tail rounds quiet; keep-best ladder unchanged
All four reference-chain slow e2e tests leave quarantine: the pr-889 regime plus the W5 test-side pacing fixes and the PROF-16316 improveChain invalidation fix (PR #898) cleared the failures. The gc-root musl-aarch64 line is dropped after a 10/10 clean musl-aarch64 JDK11 container validation of the full stack.
38c388c to
42f5c0b
Compare
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Durable-anchor eviction lacks a working traversal-based readmission path. Once the index exceeds its cap, live collections can lose targeted walks, causing later backing-storage replacements and leak instances to be missed.
🤖 Bits Code Review · Commit 42f5c0b
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
This comment will be updated automatically if new data arrives. 🔗 Commit SHA: 23f8861 | Docs | View more details | Give us feedback! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The PR preserves leak chains, improves traversal/admission, hardens slow tests, and removes their quarantine; the latest commit restores callback-based anchor readmission. The earlier finding remains partially open: sweep completion can discard resweep requests, and eviction-driven cooldowns can stall, leaving static-only collections unindexed and missing later leak instances.
🤖 Bits Code Review · Commit 6444508
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The PR preserves leak chains, improves traversal, hardens slow tests, and removes quarantine; callback-based anchor readmission is fixed. The earlier scheduling finding remains open despite the pending flag: sweep completion still loses requests and cooldown suppresses later requests, so static-only holders can miss targeted leak discovery.
🤖 Bits Code Review · Commit 957ad12
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The PR preserves leak chains, improves traversal, hardens slow tests, and removes quarantine; earlier request-loss and cooldown mechanisms are fixed. Forced resweeps can still stop after one chunk, excluding later static-only holders from targeted leak discovery, and the new cooldown regression test never triggers an eviction.
🤖 Bits Code Review · Commit 85eab40
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The PR preserves resolved leak chains, improves traversal/admission, hardens slow tests, and removes quarantine. Durable-anchor resweeps now remain enabled across chunks until completion, and the cooldown regression case refills to capacity and checks an eviction-generation increment; both reported findings are resolved, with no open findings remaining.
🤖 Bits Code Review · Commit 23f8861
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.