Performing any long running task or CPU intensive work on transport_worker threads is problematic. This is typically very bad for cluster stability.

This issue has been filed to examine the usage of transport_worked threads by ESQL, with the intention of "offloading" as much as possible, including deserialising large(ish) amounts of data.
x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverTaskRunner.java
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
/**
 * A {@link DriverRunner} that executes {@link Driver} with a child task so that we can retrieve the progress with the Task API.
 */
public class DriverTaskRunner {
    public static final String ACTION_NAME = "internal:data/read/esql/compute";
    private final TransportService transportService;
    public DriverTaskRunner(TransportService transportService, Executor executor) {
        this.transportService = transportService;
        transportService.registerRequestHandler(ACTION_NAME, ThreadPool.Names.SAME, DriverRequest::new, new DriverRequestHandler(executor));
    }
    public void executeDrivers(Task parentTask, List<Driver> drivers, ActionListener<Void> listener) {
        var runner = new DriverRunner() {
            @Override
            protected void start(Driver driver, ActionListener<Void> driverListener) {
                transportService.sendChildRequest(
                    transportService.getLocalNode(),
                    ACTION_NAME,
                    new DriverRequest(driver),
                    parentTask,
                    TransportRequestOptions.EMPTY,
                    TransportResponseHandler.empty(TransportResponseHandler.TRANSPORT_WORKER, driverListener)
                );
            }
        };
        runner.runToCompletion(drivers, listener);
    }
    private static class DriverRequest extends ActionRequest {