Repository navigation
Fix missing session starts in capability-first ADK telemetry - #449
Conversation
Verdict: Do not merge until network I/O is moved outside the session-start and buffer file locks, contention tests cover waits beyond the lock deadline, and merge order is coordinated with PRs [MAJOR] F-3 — Active telemetry PRs have textual merge conflicts
Fix: Choose a merge order now. Rebase whichever PR merges second and preserve both telemetry changes and their tests. |
|
Addressed the concurrency findings in The new contention tests hold collector calls for 6.2 seconds, exceeding the former five-second lock deadline. Validation: 368 passed; Ruff and whitespace checks clean. |
Track recorded session starts separately from allocated IDs and ensure starts from shared single-event and batch dispatch. Preserve dashboard attribution across install, tenant, agent-type, and collector contexts; coordinate concurrent CLI processes and retain retries when buffering fails. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 70ddf006-7f8d-48e7-9afa-3fbae73b3864
Reserve session starts under short locks, buffer followers while starts are pending, and detach retry snapshots before collector I/O so concurrent appends cannot be lost or overtaken. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 95071db8-bd9f-4036-b163-165d5a3dcf09
2412c30 to
2ef0a9c
Compare
|
Resolved the merge conflicts by rebasing onto current |
Dawn Jeong (daeunJe0ng)
left a comment
There was a problem hiding this comment.
[Copilot-review] Request changes at 2ef0a9c762de7ad6d7eddb70df15d622d75af364. Separating session allocation from recorded starts and moving network I/O outside state locks are sound improvements. The snapshot-ownership race can still lose a buffered start. The existing normal-exit loss thread remains applicable: #449 (comment). Cross-context replay also violates the documented ordering guarantee. Static review only; no tests, builds or live telemetry were run.
Batch fresh session starts with owner activity, fence retry snapshots with tokenized claims, and retain session prerequisites through buffered replay. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 95071db8-bd9f-4036-b163-165d5a3dcf09
Dawn Jeong (daeunJe0ng)
left a comment
There was a problem hiding this comment.
[copilot-review] Approving d3035ad9 with the three unresolved findings below treated as follow-up work. The three earlier blockers are fixed in their demonstrated forms. The session-expiry recovery issue remains unresolved; this approval does not mean it was fixed. Static review only; no tests, builds or live telemetry were run.
Preserve completed session-start evidence across rollover, isolate prerequisite wrappers from the legacy retry format, and enforce retry-buffer count and byte limits while retaining session starts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 95071db8-bd9f-4036-b163-165d5a3dcf09
44304fc
Dawn Jeong (daeunJe0ng)
left a comment
There was a problem hiding this comment.
[copilot-review] Request changes at 31ef143e8fbdd6516a104e98fd926752a7118662. The shared session-start enforcement is the right design, and the previous rollover-evidence, legacy-buffer-format and buffer-budget findings are fixed in their demonstrated forms. One blocking retry-selection defect remains: eligible buffered activity can be starved indefinitely while later events keep uploading. Completion-ledger growth is a separate nonblocking follow-up. Static review only; no tests, builds or live telemetry were run.
Promote waiting followers after raw retry delivery, quarantine malformed rows, preserve session prerequisites on batch faults, and keep completion failures fail-open. Bound completion evidence with ordered recovery starts for late followers and document deterministic offline validation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a4cd1deb-cafc-4d91-ab4a-5c171fcd1108
Dawn Jeong (daeunJe0ng)
left a comment
There was a problem hiding this comment.
[copilot-review] Approve at c5b58f09f87384d46b80e9de8f2fa9f1172421d1.
The previous retry-starvation blocker is fixed: successful raw-snapshot finalization now promotes eligible waiting followers.
Completion history is bounded, and recovery after evidence eviction preserves the original follower attribution and start-before-activity ordering.
I withdraw the previous findings for their demonstrated triggers, including the completion-history follow-up.
The inspected regression tests cover the public-emission retry path and eviction recovery; no remaining Blocking or Should-fix defect was established.
Static review only; tests, builds, and live telemetry were not independently exercised.
Problem
Capability-first ADK entry points allocate and persist a session ID without emitting
adk.session.start. A later explicitstart_session()previously treated the allocated ID as evidence that a start had already been emitted and skipped it. Capability usage could therefore appear in External DA charts while sessions and active installs remained zero.Changes
Verification
381 targeted tests passed across the SDK, authentication, Workday telemetry, FlightCheck telemetry, and telemetry guard suites. Regression coverage includes capability-first starts, matching External DA attribution, legacy/allocated session files, timeout rollover, consent changes, buffered replay, failed buffering, async responsiveness, cohort changes, and simultaneous fresh capability-shim subprocesses. Ruff and diff whitespace checks pass.
Merge order
PR #458 is merged, and this branch is rebased onto it with both tenant-classification and session-reporting documentation/tests preserved. Rebase #436 after #449 so its LPC emitter changes are applied to this finalized transport.
Scope
Prospective emitter fix only: existing clones must pull the change; historical missing session-start events are not backfilled. No Aria cube or FlightCheck outcome-event schema changes. Dashboard test-tenant exclusions were saved separately and are not repository changes.