dotnet / dotnet/orleans

Re-entrant grain flow control question

Open
#7,972 8 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
C#
Stars
10.9k
Forks
2.1k
Avg merge
14h 42m
Merged PRs (30d)
354

Description

Does Orleans provide flow control to re-entrant grains, or is it left up to each re-entrant grain to use a "max concurrency" rate limiter and then throw an exception if the number of concurrent requests exceeds the allowable number? Ideally, Orleans would limit/block callers until the target grain is under the configured "max concurrency".

If Orleans provides no such controls/limits, then all re-entrant grains are arguably exposed to denial-of-service (DoS) attacks, unless those grains have implemented custom rate limiting controls (like throwing an exception if the rate limiter is at capacity).

All grains should apply backpressure to calling grains and it's not clear from the Orleans documentation whether it does this for re-entrant grains. I'm aware that the `SiloMessagingOptions.MaxEnqueuedRequestsHardLimit` option can be used to provide flow control for non-re-entrant grains; but, it doesn't seem like this will work for re-entrant grains. Apologies if I have that wrong.

Contributor guide

Open the contributing guide

Research direction

Start with the Orleans documentation for re-entrant grains and SiloMessagingOptions.MaxEnqueuedRequestsHardLimit. Determine whether re-entrant grain calls receive backpressure or require custom max-concurrency handling, then document the behavior and its DoS implications clearly for callers and grain authors.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
distributed-systems
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.