Avi Levin created AVRO-3831:
-------------------------------
Summary: Async support for C#
Key: AVRO-3831
URL: https://issues.apache.org/jira/browse/AVRO-3831
Project: Apache Avro
Issue Type: Improvement
Components: csharp
Reporter: Avi Levin
De/serialization libraries in .NET are expected to support asynchrony for
reasons well-described for example
[here|https://learn.microsoft.com/en-us/aspnet/core/fundamentals/best-practices?view=aspnetcore-8.0#avoid-blocking-calls]:
{quote}Asynchronous APIs allow a small pool of threads to handle thousands of
concurrent requests by not waiting on blocking calls. Rather than waiting on a
long-running synchronous task to complete, the thread can work on another
request [...] Many synchronous blocking calls lead to Thread Pool starvation
and degraded response times.
{quote}
The first step would be to add async equivalents to each method in the
{{Encoder}} and {{Decoder}} implementations, using the async methods in
{{Stream}} for its implementation. (There is a "[flag-argument
hack|https://stackoverflow.com/a/54267939/1180926]" pattern used in many
libraries, including the Azure SDK, to prevent code duplication between the
sync and async copies of otherwise identical methods.)
Upstream libraries like {{DataFileReader/DataFileWriter}} can be updated once
the en/decoders have been.
AVRO-2252 requested this, but as far as I can tell it never got backlogged in
any of the issues mentioned there.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)