elsa-core/test/unit
Sipke Schoorstra f477fc8b07
fix(runtime): bound concurrent pre-cancel snapshot Finds during drain (#8113)
* fix(runtime): bound concurrent pre-cancel snapshot Finds during drain

Unbounded Task.WhenAll of per-cycle Finds self-contends under large
live-cycle N: more 250ms timeouts, more drainInduced excludes, more
Interrupted misses. Cap snapshot Finds at 16. The 250ms budget still
starts only after a slot is acquired so queued Finds are not fail-open
excluded by waiting.

Phase C stays sequential. No store-contract change.

Closes #8083

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* fix(runtime): exclude null pre-cancel snapshots from drainInduced

A successful Find that returns no row is unknown pre-state, not a
confirmed non-Cancelled snapshot. Joining drainInduced let Phase C
rewrite a later Finished/Cancelled as Interrupted. Timeout/error
already excluded; null now does too.

Closes nothing extra; keeps #8083 fail-open exclude.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* fix(runtime): promote null snapshot after Phase A force-cancel

A successful pre-cancel Find that returns no row is not a persisted user-cancel, but excluding it from drainInduced skipped Interrupted persist after deadline-breach force-cancel of a live cycle (DeadlineBreachPersistsInterrupted). Join drainInduced only after we ourselves cancel that handle. Timeout/error and confirmed Cancelled snapshots stay excluded.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* fix(runtime): promote null snapshot only when TryCancel transitions

Cancel() is a no-op on an already-disposed handle, so treating every Cancel() call as drain-induced could rewrite a Finished/Cancelled row the runner committed while snapshot was in flight. TryCancel reports a real transition; only those ids join drainInduced after a null Find.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-13 17:18:35 +02:00
..
Elsa.Activities.UnitTests Preserve StateMachine composite transition continuations 2026-08-31 04:51:34 +02:00
Elsa.AI.Abstractions.UnitTests Implement Weaver AI Copilot core (#7523) 2026-06-04 11:35:44 +02:00
Elsa.AI.Copilot.UnitTests Use Copilot SDK for Weaver agent loop (#7700) 2026-06-08 00:35:47 +02:00
Elsa.AI.Host.UnitTests Increase AI host test coverage 2026-06-27 04:04:39 +02:00
Elsa.AI.Persistence.EFCore.UnitTests chore: apply safe dependency upgrades (#7896) 2026-07-26 21:42:27 +02:00
Elsa.Alterations.Core.UnitTests fix(alterations): honor tenant isolation in Memory alteration stores (#8106) 2026-09-13 14:04:46 +02:00
Elsa.Api.Common.UnitTests fix(auth): validate wildcard permission patterns and warn on deny-list stripping (#7997) 2026-08-27 11:45:54 +02:00
Elsa.Bpmn.Interchange.UnitTests fix(bpmn): make document PUT If-Match and save a compare-and-swap (#8092) 2026-09-13 01:40:43 -07:00
Elsa.Bpmn.UnitTests feat(bpmn): declare BpmnProcess's Done and Cancelled outcomes as flow ports (#8066) 2026-09-11 23:16:21 -07:00
Elsa.Common.UnitTests fix(persistence): honor tenant isolation in Memory workflow stores (#8100) 2026-09-13 02:56:01 -07:00
Elsa.Dashboard.Api.UnitTests [codex] Extract dashboard contributors into companion modules (#7692) 2026-06-05 14:30:52 +02:00
Elsa.Diagnostics.ConsoleLogs.UnitTests refactor(auth)!: retire the legacy permission constants and duplicate descriptor types (#7987) 2026-08-25 06:04:32 +02:00
Elsa.Diagnostics.OpenTelemetry.UnitTests [codex] Fix console log metadata and type resolution (#7542) 2026-05-30 22:52:01 +02:00
Elsa.Diagnostics.StructuredLogs.Persistence.Relational.UnitTests Fix structured log diagnostics registration 2026-05-17 08:42:23 +02:00
Elsa.Diagnostics.StructuredLogs.UnitTests refactor(auth)!: retire the legacy permission constants and duplicate descriptor types (#7987) 2026-08-25 06:04:32 +02:00
Elsa.Expressions.UnitTests [codex] Harden C# expression host-code execution (#7519) 2026-05-21 00:50:25 +02:00
Elsa.ExternalAuthentication.UnitTests Enforce unique external refresh token hashes (#8095) 2026-09-13 01:10:32 -07:00
Elsa.Features.UnitTests fix(features): support features introduced during Module.Apply() (#7966) 2026-08-20 23:53:07 +02:00
Elsa.Hosting.Management.UnitTests feat: introduce HTTP webhooks module 2026-08-03 02:08:15 +02:00
Elsa.Http.UnitTests Skip HTTP workflow route matching outside base path (#7757) 2026-09-12 18:12:37 -07:00
Elsa.Identity.UnitTests fix(identity): enforce per-tenant uniqueness in Memory identity stores (#8108) 2026-09-13 15:26:08 +02:00
Elsa.Labels.UnitTests fix(labels): enforce per-tenant uniqueness on NormalizedName (#8112) 2026-09-13 16:16:01 +02:00
Elsa.Mediator.UnitTests [codex] Fix diagnostics live feed regressions (#7548) 2026-05-31 09:40:02 +02:00
Elsa.Persistence.EFCore.UnitTests fix(labels): enforce per-tenant uniqueness on NormalizedName (#8112) 2026-09-13 16:16:01 +02:00
Elsa.Persistence.VNext.UnitTests feat(secrets)!: scope secrets to tenants (#7991) 2026-08-26 01:56:55 +02:00
Elsa.Platform.Integration.UnitTests Add Platform integration 2026-06-18 18:27:27 +02:00
Elsa.Resilience.Core.UnitTests test(resilience): cover Elsa.Resilience.Core and lift its coverage gate off the Debug/Release seam (#7971) 2026-08-21 03:01:51 +02:00
Elsa.SasTokens.UnitTests [codex] Harden initial security remediation slice (#7495) 2026-05-22 00:45:47 +02:00
Elsa.Scheduling.UnitTests address greptile review feedback (greploop iteration 1) 2026-06-21 19:43:09 +02:00
Elsa.Secrets.UnitTests feat(secrets)!: scope secrets to tenants (#7991) 2026-08-26 01:56:55 +02:00
Elsa.Shells.Api.Tests test: fix two intermittent test failures (#7957) (#7965) 2026-08-20 23:30:38 +02:00
Elsa.Tenants.UnitTests fix: restore request services after tenant middleware exceptions 2026-07-30 09:54:00 +03:00
Elsa.UserTasks.Persistence.ConformanceTests feat(user-tasks)!: migrate endpoints to structured permissions (#7999) 2026-08-27 12:06:52 +02:00
Elsa.UserTasks.Persistence.EFCore.UnitTests feat(user-tasks)!: migrate endpoints to structured permissions (#7999) 2026-08-27 12:06:52 +02:00
Elsa.UserTasks.UnitTests feat(user-tasks)!: migrate endpoints to structured permissions (#7999) 2026-08-27 12:06:52 +02:00
Elsa.Workflows.Api.UnitTests Honor label filters when listing workflow definitions (#8035) 2026-09-05 22:13:16 -07:00
Elsa.Workflows.Core.UnitTests Merge remote-tracking branch 'origin/release/3.8.0' 2026-09-06 00:06:14 +02:00
Elsa.Workflows.Management.UnitTests fix(persistence): honor tenant isolation in Memory workflow stores (#8100) 2026-09-13 02:56:01 -07:00
Elsa.Workflows.Runtime.UnitTests fix(runtime): bound concurrent pre-cancel snapshot Finds during drain (#8113) 2026-09-13 17:18:35 +02:00
Directory.Build.props Add coverage enforcement for test projects (#6950) 2025-10-07 19:59:53 +02:00