jca default workmanager available threads no more than the core-threads
Hi,
For a custom JCA resource adapter, at a standalone JBoss EAP 6.4.0.GA instance,
the default workmanager is used with the following configuration for the short running threads:
<default-workmanager>
<short-running-threads allow-core-timeout="true">
<core-threads count="5" />
<queue-length count="10" />
<max-threads count="10" />
<keepalive-time time="900" unit="seconds" />
</short-running-threads>
...
</default-workmanager>
The problem is that for eight concurrent JCA resource adapter clients, the workmanager does not create more than five threads.
The status of the short-running-threads pool produced by the related cli command is the following:
standalone@localhost:9999 /] /subsystem=jca/workmanager=default/short-running-threads=default:read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
"allow-core-timeout" => true,
"core-threads" => 5,
"current-thread-count" => 5,
"handoff-executor" => undefined,
"keepalive-time" => {
"time" => 900L,
"unit" => "SECONDS"
},
"largest-thread-count" => 5,
"max-threads" => 10,
"name" => "default",
"queue-length" => 10,
"queue-size" => 1,
"rejected-count" => 0,
"thread-factory" => undefined
}
}
At the previous output, also note that the queue-size is one.
When the first five clients complete their work, the workmanager allocates threads for the rest three clients.
In this case, the status of the short-running-threads pool is the following:
[standalone@localhost:9999 /] /subsystem=jca/workmanager=default/short-running-threads=default:read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
"allow-core-timeout" => true,
"core-threads" => 5,
"current-thread-count" => 5,
"handoff-executor" => undefined,
"keepalive-time" => {
"time" => 900L,
"unit" => "SECONDS"
},
"largest-thread-count" => 5,
"max-threads" => 10,
"name" => "default",
"queue-length" => 10,
"queue-size" => 0,
"rejected-count" => 0,
"thread-factory" => undefined
}
}
The core-threads parameter seems to act like the max-threads parameter, since if core-threads=5 and max-threads=10,
the thread pool can not have more than 5 threads. The only effect that max-threads parameter has,
is that the number of the core threads can not exceed it. For example, if core-threads=10 and max-threads=5,
the thread pool can not have more that 5 threads.
Thanks in advance,
John Psoroulas