StructuredExecutor Incompatible with HttpClient?
Alan Bateman
Alan.Bateman at oracle.com
Mon Nov 29 16:01:04 UTC 2021
On 29/11/2021 14:50, Eric Kolotyluk wrote:
> @Alan Bateman <mailto:Alan.Bateman at oracle.com>
> Thanks for trying my example...
>
> 1. Using newThreadPerTaskExecutor() with virtual threads does seem to
> work fine.
> * However, it's the StructuredExecutor that I really want to test.
> 2. Did you also run the case with the synchronous HTTP request?
> * Earlier you implied this should work, but it also failed for me.
> 3. Are you saying that StructuredExecutor will never work with the
> asynchronous HTTP client?
> * I am building the HTTP client with the StructuredExecutor, so
> why is the client using threads outside of the tree?
>
In your example, you specify the executor for async and dependent tasks
to the HttpClient.Builder. If you drop that one line then I would expect
both the async and synchronous usages of the API will just work. The
synchronous form replaces the sendAsync + thenApply(body) + join with
send + body.
I don't know how common it is to using a custom executor here but it
does need to examined. It might be that the per-HttpClient "Selector
Manager" can submitted to the custom executor rather than creating a
daemon Thread.
-Alan
More information about the loom-dev
mailing list