Feature #11183
Upgrade our PASOE implementation to a fully async paradigm
0%
Related issues
History
#1 Updated by Artur Școlnic 6 months ago
At a high level, the current architecture relies on two primary thread pools:
- LegacyServiceWorker threads, which manage incoming requests
- MsaTask threads, which perform the actual work
Currently, a LegacyServiceWorker launches an MsaTask in a blocking manner and waits for that task to complete. While this model works, it effectively ties up the LegacyServiceWorker thread for the duration of the task, limiting overall throughput under load.
If we were to make this interaction fully asynchronous, allowing the LegacyServiceWorker to dispatch the task and immediately return to handling other requests, we could improve thread utilization and potentially increase total system throughput.
I don't yet have concrete numbers on the expected improvement, but architecturally this feels like a logical next step, especially as we continue to scale.
#2 Updated by Greg Shah 6 months ago
- Related to Feature #6673: rework appserver agent approach to use a shared queue instead of a check-in/check-out registry added
#4 Updated by Artur Școlnic 6 months ago
Constantin, please correct me if I am not accurate here, but I think this already happens with PASOE.AppServerConnectionPool has BlockingQueue of worker service threads which in turn execute the MSA tasks.
What I am talking about is using the current infrastructure that relies on Futures to execute tasks, but is doing it in a blocking manner, which defeats the purpose of using the Futures.
#5 Updated by Artur Școlnic 6 months ago
I believe for classic this does not happen and on agent pool exhaustion, the requests are refused.
#7 Updated by Artur Școlnic 6 months ago
Greg Shah wrote:
My idea was not to have a queue for getting a thread but a queue for the jobs. Also the idea is to do almost nothing in the Jetty context other than add the request to the queue and then continue processing. This affects both clasic and PASOE, I think.
If by 'jobs' you mean the MsaTasks in PASOE, running the programs and procedures on the appserver, then this already happens with the use of a ThreadPoolExecutor that has a LinkedBlockingQueue for tasks.
#9 Updated by Artur Școlnic 6 months ago
Sure, I will look into this as well.
#10 Updated by Artur Școlnic 5 months ago
- Assignee set to Artur Școlnic
- Status changed from New to WIP