Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.17.2
-
None
-
Novice
Description
In CamelHttpClient a default threadpool is being created with a hardcoded size of 16:
@Override protected void doStart() throws Exception { if (!hasThreadPool()) { // if there is no thread pool then create a default thread pool using daemon threads QueuedThreadPool qtp = new QueuedThreadPool(); // 16 max threads is the default in the http client qtp.setMaxThreads(16); qtp.setDaemon(true); // let the thread names indicate they are from the client qtp.setName("CamelJettyClient(" + ObjectHelper.getIdentityHashCode(this) + ")"); setThreadPoolOrExecutor(qtp); } super.doStart(); }
this configuration does not work because number of selectors is calculated relative to the number of CPUs in HttpClientTransportOverHTTP:
public HttpClientTransportOverHTTP() { this(Math.max(1, Runtime.getRuntime().availableProcessors() / 2)); }
As a result by default camel simply hangs on these systems...
It would be nice if CamelHttpClient would have a constructor that set the HttpClientTransport or at least the number of selectors.
Attachments
Issue Links
- links to