Re-entrant grain flow control question
- 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
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