Skip to content

.Net Processes - Expose OnError Event Handling #9187

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 10, 2024
Merged

Conversation

crickman
Copy link
Contributor

@crickman crickman commented Oct 9, 2024

Motivation and Context

Introduce support for .OnError with parity to .OnResult

Description

  • Developer shouldn't need to guess at naming convention for error handling.
  • Passing full exception, not just message.

I'd really like to see ability to define process-level error handling

I like the OnError approach, but there are still a lot of cases where the Process just stops w/o any information...this doesn't affect those cases and I'm not actively looking (I have seen quite a few actionable messages, however, which is great!)

Contribution Checklist

@crickman crickman added PR: ready for review All feedback addressed, ready for reviews .NET Issue or Pull requests regarding .NET code experimental Associated with an experimental feature processes labels Oct 9, 2024
@crickman crickman self-assigned this Oct 9, 2024
@crickman crickman requested a review from a team as a code owner October 9, 2024 22:33
@crickman crickman added this pull request to the merge queue Oct 10, 2024
Merged via the queue into main with commit 5cc3f79 Oct 10, 2024
15 checks passed
@crickman crickman deleted the processes-onerror-event branch October 10, 2024 17:05
github-merge-queue bot pushed a commit that referenced this pull request Oct 31, 2024
### Motivation and Context
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

Enabled support for function-specific error-handler step in this PR:
#9187

Fixes: #9291

This change provides the ability to define a _process scoped_ error
handler (as opposed to function specific).

When a function-scoped error-handler is defined, it will take
precedence.

### Description
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

```c#
ProcessBuilder process = new(nameof(ProcessFunctionErrorHandledAsync));

ProcessStepBuilder errorStep = process.AddStepFromType<ErrorStep>();
process.OnError().SendEventTo(new ProcessFunctionTargetBuilder(errorStep));

class ErrorStep : KernelProcessStep
{
    [KernelFunction]
    public void GlobalErrorHandler(Exception exception) { }
}
```

**Notes:**
- Switch error handler from passing `Exception` object to a
`KernelProcessError` to satisfy serialization expectations
- Normalized namespaces for `Internal` shared code
- Introduced shared `ProcessConstants` file
- Opportunistically converted some `List` creation to `Array`
- Opportunistically included parameter name in some `Verify` assertions.
- Opportunistically removed a extraneous _not-null_ directives (`!`)
- Verified DAPR error handling in demo app (`True` means the expected
error handler was invoked):
<img width="449" alt="image"
src="https://github.com/user-attachments/assets/2d987378-edd2-4c9f-92dd-cf112888b8b0">


### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->

- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone 😄
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
experimental Associated with an experimental feature .NET Issue or Pull requests regarding .NET code PR: ready for review All feedback addressed, ready for reviews processes
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants