Skip to content

feat(audience-sdk): SDK-257 E2E robustness follow-up #1564

feat(audience-sdk): SDK-257 E2E robustness follow-up

feat(audience-sdk): SDK-257 E2E robustness follow-up #1564

Triggered via pull request April 29, 2026 11:47
Status Failure
Total duration 46s
Artifacts

commitlint.yml

on: pull_request
commitlint
44s
commitlint
Fit to window
Zoom out
Zoom in

Annotations

1 error and 2 warnings
commitlint
You have commit messages with errors ⧗ input: feat(audience-sdk): SDK-257 E2E robustness follow-up Tests: - ThreadSafetyStressTests: 4 / 16 thread sustained Track load (5s, no exceptions, queue count matches fired). 16-thread mixed Track / Identify / SetConsent. 10 000-call per-call main-thread allocation budget via GC.GetAllocatedBytesForCurrentThread, isolated from drain-thread noise. - OfflineResilienceTests: Track and Shutdown absorb disk-write IOException without throwing. Memory-only fallback ("retain events without losing in-flight") captured as [Ignore]'d test — EventQueue currently drops on IOException; gap documented for follow-up. - PublishableKeyPrefixTests: Init warns on test-prefix + production BaseUrl (and the symmetric pairing). Custom dev/staging URLs not flagged. Track + Flush surfaces backend 401 as ValidationRejected via OnError, body propagated through. - TimerDisposalTests: null, already-disposed, idle, long-running callback (regression guard for the SDK fix below). SDK: - ImmutableAudience.WarnIfKeyEnvironmentMismatch logs at Init when prefix and BaseUrl override contradict. Init proceeds either way. - New TimerDisposal.DisposeAndWait at three call sites (Session.Start, Session.DrainHeartbeatTimer, ImmutableAudience.Shutdown). Replaces a `using var handle; timer.Dispose(handle); handle.WaitOne(timeout)` pattern that raced its own dispose — WaitOne timeout disposed the handle, then Timer's signal-when-done fired SetEvent on the closed SafeWaitHandle and crashed the threadpool. Helper leaks the wait handle on timeout; GC reclaims after the signal lands. Test infrastructure: - TestDefaults shared constants (FlushIntervalSeconds, FlushSize) across the new fixtures. Out of scope: - Kill-Unity restart automation — needs CLI Unity test harness. - Network toggle — platform-coupled, requires admin privileges. - EventQueue memory-only fallback for disk-full — separate ticket. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> ✖ body's lines must not be longer than 100 characters [body-max-line-length] ✖ subject must not be sentence-case, start-case, pascal-case, upper-case [subject-case] ✖ found 2 problems, 0 warnings ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
commitlint
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
commitlint
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/