aerospike-client-csharp
aerospike-client-csharp copied to clipboard
Cluster.Run on the thread pool
https://github.com/aerospike/aerospike-client-csharp/blob/ba6b5a6b422bc7b0992f9eeb761db94c8f2085ba/AerospikeClient/Cluster/Cluster.cs#L301
Currently, Cluster.Run is executed on a dedicated threads. This is not great for several reasons:
- it's a inefficient use of resource, especially when the application is connected to many clusters
- it involves extra context switches
- when investigating thread pool starvation, a trace could show that
Cluster.Runwas the method that spent the most time blocking threads. After some time, you realize that it's a in dedicated thread so it can be ignored for the investigation.
What do you think about making the Aerospike client a good citizen by turning this code async and running it in the thread pool?
I am in the process of changing the client to be async awaitable. I will keep your concerns in mind when I revisit the tendThread and Cluster.Run.