Some Grain calls throw SiloUnavailableException when they should be successful
- Dominant language
- C#
- Stars
- 10.9k
- Forks
- 2.1k
- Avg merge
- 14h 42m
- Merged PRs (30d)
- 354
Description
Since https://github.com/dotnet/orleans/issues/942, when we detect that a gateway went down, we take all requests not completed that should be sent to this gateway and set SiloUnavailableException as the response.
The problem is that some of these requests might already have been sent and currently being run on a silo. We just should wait normally the response instead of mark them as faulted.
~~Here is the test I wrote to reproduce the issue: https://github.com/benjaminpetit/orleans/commit/7ef900ab10217f5073ce3f555d7bd9b1f88b0015~~
~~The flaw of this test is that I needed to modify the algorithm to choose a Gateway to only use the one pointed by the PreferedGatewayIndex value (when set), I am not sure it is an acceptable change.~~
See #2285
Contributor guide
Research direction
Start by reading the request and gateway-handling context in this issue, then inspect the linked reproduction test commit and related issue #2285. Confirm which requests were already sent before gateway failure and verify that only genuinely unsent requests receive SiloUnavailableException, while in-flight requests complete normally.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- backend, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100