elsa-core/src/modules
Sipke Schoorstra 749b6491fc
fix(core): a throwing FaultSignal handler must not escape the middleware (#7924)
* fix(core): a throwing FaultSignal handler must not escape the middleware (#7911)

The signal is sent from inside the catch whose whole job is to stop exceptions
escaping the activity pipeline. A handler that threw went straight through it:
no incident, no strategy, and the original fault lost along with it.

The send is now guarded. A handler that throws is treated as not having handled
the fault, so the incident strategy runs exactly as it would with no handler
present. That is the conservative direction: a handler that failed part way
through may have left the faulted activity in any state, and an incident is a
better answer than silence. Its exception is logged at error level, because a
broken fault handler is a defect in its own right rather than a workflow
outcome.

Covered both ways, since a handler that already claimed the fault before
throwing is the case that could plausibly have been mistaken for success.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(core): let cancellation from a fault handler propagate

The handler guard caught OperationCanceledException along with everything else,
so a cancellation raised while an ancestor was being offered a fault was logged
as a broken handler and handed to the incident strategy. A deliberately
cancelled run reported itself faulted.

Cancellation is excluded now, matching how this repository already keeps the two
apart: the workflow-level exception middleware cancels and rethrows before its
general catch, and WorkflowRunner declines to record cancellation as the
workflow's exception.

Caught by review on #7924.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* test(core): pin that a handled fault stays in the execution log

The justification for dropping the incident is that the journal keeps the
evidence. That was asserted in several places and guarded nowhere.

It holds because ExecutionLogMiddleware writes the Faulted entry from a catch
that rethrows, and it is registered inside ExceptionHandlingMiddleware, so the
entry lands before the fault is ever offered to an ancestor. Swapping those two
registrations would make a handled failure disappear from the record with
nothing failing, which is what this test now prevents.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 05:34:19 +02:00
..
Elsa
Elsa.AI.Abstractions Implement Weaver AI Copilot core (#7523) 2026-06-04 11:35:44 +02:00
Elsa.AI.Copilot Implement Weaver AI Copilot core (#7523) 2026-06-04 11:35:44 +02:00
Elsa.AI.Host Implement Weaver AI Copilot core (#7523) 2026-06-04 11:35:44 +02:00
Elsa.AI.Persistence.EFCore Implement Weaver AI Copilot core (#7523) 2026-06-04 11:35:44 +02:00
Elsa.Alterations Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
Elsa.Alterations.Core
Elsa.Caching [codex] Add package manifest feature metadata (#7463) 2026-05-18 15:39:22 +02:00
Elsa.Common Fix tenant service mutation race (#7898) 2026-07-30 02:47:44 +02:00
Elsa.Dashboard.Api Add operational dashboard API 2026-06-02 02:33:11 +02:00
Elsa.Diagnostics.ConsoleLogs Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
Elsa.Diagnostics.OpenTelemetry [codex] Fix diagnostics live feed regressions (#7548) 2026-05-31 09:40:02 +02:00
Elsa.Diagnostics.StructuredLogs [codex] Add package manifest feature metadata (#7463) 2026-05-18 15:39:22 +02:00
Elsa.Diagnostics.StructuredLogs.Persistence.Relational
Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite chore: apply safe dependency upgrades (#7896) 2026-07-26 21:42:27 +02:00
Elsa.Dsl.ElsaScript
Elsa.Expressions Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
Elsa.Expressions.CSharp [codex] Harden C# expression host-code execution (#7519) 2026-05-21 00:50:25 +02:00
Elsa.Expressions.JavaScript Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
Elsa.Expressions.JavaScript.Libraries Bump OpenTelemetry and Remotion dependencies (#7547) 2026-05-31 08:30:40 +02:00
Elsa.Expressions.Liquid
Elsa.Expressions.Python [codex] Harden C# expression host-code execution (#7519) 2026-05-21 00:50:25 +02:00
Elsa.Hosting.Management Shorten configured application instance names 2026-06-20 12:50:02 +02:00
Elsa.Http Guard HTTP fault handling when workflow reload returns null (#7714) 2026-06-14 22:23:38 +02:00
Elsa.Identity fix: use tenant-agnostic application lookup for api keys 2026-06-09 06:09:47 +02:00
Elsa.KeyValues Add workflow dispatch transactional outbox (#7517) 2026-05-22 00:13:16 +02:00
Elsa.Labels
Elsa.Persistence.EFCore fix: use tenant-agnostic application lookup for api keys 2026-06-09 06:09:47 +02:00
Elsa.Persistence.EFCore.Common test: cover Oracle bulk upsert SQL generation 2026-07-11 14:35:36 +02:00
Elsa.Persistence.EFCore.MySql Add bookmark queue dead-letter store (#7516) 2026-05-21 23:43:36 +02:00
Elsa.Persistence.EFCore.Oracle Add bookmark queue dead-letter store (#7516) 2026-05-21 23:43:36 +02:00
Elsa.Persistence.EFCore.PostgreSql Add bookmark queue dead-letter store (#7516) 2026-05-21 23:43:36 +02:00
Elsa.Persistence.EFCore.Sqlite chore: apply safe dependency upgrades (#7896) 2026-07-26 21:42:27 +02:00
Elsa.Persistence.EFCore.SqlServer Add bookmark queue dead-letter store (#7516) 2026-05-21 23:43:36 +02:00
Elsa.Persistence.VNext Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Persistence.VNext.Extensions Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Persistence.VNext.MongoDb Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Persistence.VNext.PostgreSql Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Persistence.VNext.Relational Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Persistence.VNext.Runtime Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Persistence.VNext.Sqlite chore: apply safe dependency upgrades (#7896) 2026-07-26 21:42:27 +02:00
Elsa.Persistence.VNext.SqlServer Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Resilience Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
Elsa.Resilience.Core
Elsa.SasTokens [codex] Harden initial security remediation slice (#7495) 2026-05-22 00:45:47 +02:00
Elsa.Scheduling Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
Elsa.Secrets Implement secret update functionality, add related tests, and update project references. 2026-06-01 23:47:05 +02:00
Elsa.Secrets.JavaScript Add JavaScript secret functions 2026-06-01 09:26:05 +02:00
Elsa.Secrets.Persistence.EFCore Use shared secret name normalization 2026-06-01 22:28:38 +02:00
Elsa.Secrets.Persistence.EFCore.MySql Reuse shared EF provider wiring for secrets 2026-06-01 21:11:22 +02:00
Elsa.Secrets.Persistence.EFCore.Oracle Share EF secret shadow property names 2026-06-01 21:45:53 +02:00
Elsa.Secrets.Persistence.EFCore.PostgreSql Reuse shared EF provider wiring for secrets 2026-06-01 21:11:22 +02:00
Elsa.Secrets.Persistence.EFCore.Sqlite Share EF secret shadow property names 2026-06-01 21:45:53 +02:00
Elsa.Secrets.Persistence.EFCore.SqlServer Reuse shared EF provider wiring for secrets 2026-06-01 21:11:22 +02:00
Elsa.Secrets.Persistence.VNext Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
Elsa.Shells.Api
Elsa.Tenants
Elsa.Tenants.AspNetCore [codex] Add package manifest feature metadata (#7463) 2026-05-18 15:39:22 +02:00
Elsa.WorkflowProviders.BlobStorage
Elsa.WorkflowProviders.BlobStorage.ElsaScript
Elsa.Workflows.Api Add output converter support at binding boundaries 2026-07-31 04:10:48 +02:00
Elsa.Workflows.Core fix(core): a throwing FaultSignal handler must not escape the middleware (#7924) 2026-08-12 05:34:19 +02:00
Elsa.Workflows.Management Add output converter support at binding boundaries 2026-07-31 04:10:48 +02:00
Elsa.Workflows.Runtime Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
Elsa.Workflows.Runtime.Distributed [codex] Scope console logs to workflow instances (#7535) 2026-05-25 11:49:51 +02:00
Directory.Build.props