dotnet / dotnet/orleans

Some Grain calls throw SiloUnavailableException when they should be successful

Open
#2,282 0 comments 1 reaction 0 assignees View on GitHub
bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.