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/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java
List.of(
                DriverStatus.ENTRY,
                AbstractPageMappingOperator.Status.ENTRY,
                ExchangeSinkOperator.Status.ENTRY,
                ExchangeSourceOperator.Status.ENTRY,
                LimitOperator.Status.ENTRY,
                LuceneSourceOperator.Status.ENTRY,
                MvExpandOperator.Status.ENTRY,
                ValuesSourceReaderOperator.Status.ENTRY,
                SingleValueQuery.ENTRY
            ).stream(),
            Block.getNamedWriteables().stream()
        ).toList();
    }
    @Override
    public List<ExecutorBuilder<?>> getExecutorBuilders(Settings settings) {
        final int allocatedProcessors = EsExecutors.allocatedProcessors(settings);
        return List.of(
            new FixedExecutorBuilder(
                settings,
                ESQL_THREAD_POOL_NAME,
                ThreadPool.searchOrGetThreadPoolSize(allocatedProcessors),
                1000,
                "esql",
                EsExecutors.TaskTrackingConfig.DEFAULT
            )
        );
    }
}