dotnet / dotnet/orleans

Incoming grain call filter catch blocks are ignored for exceptions from transactional grains.

Open
#8,476 0 comments 0 reactions 0 assignees View on GitHub
Needs: triage :mag:
Dominant language
C#
Stars
10.9k
Forks
2.1k
Avg merge
13h 56m
Merged PRs (30d)
351

Description

If an incoming grain call filter has a try/catch block in which the try block calls ```await context.Invoke();``` any exceptions thrown while executing the grain call will be ignored by the catch block if the grain method is transactional.

The issue is reproduced and isolated in this github repo:
https://github.com/temcewen/orleans-transaction-filter/

Instructions for setting up the project and reproducing the issue are in the README file.

The issue was originally found as the result of one transactional grain calling another transactional grain and the exception was thrown in the second grain, and so that was how it was reproduced in the project linked above.

Contributor guide

Open the contributing guide

Research direction

Start with the README in the linked reproduction repository and follow its setup and reproduction steps for an incoming grain call filter using context.Invoke() with a transactional grain. Trace the corresponding Orleans call path and verify that exceptions from the transactional grain are observed by the filter's catch block; done means the reproduction no longer demonstrates ignored exceptions.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.