### Description

This is related to #96757.

Right now downsampling uses a thread pool with a single running thread (disallowing concurrent downsampling operations at the transport level) and an unbounded queue of waiting threads, queueing and waiting to be executed. We need to explore options around using multiple running threads here.
x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleIndexerAction.java
numIndexed += r.getNumIndexed();
            } else if (shardResponse instanceof Exception e) {
                throw new ElasticsearchException(e);
            } else {
                assert false : "unknown response [" + shardResponse + "]";
                throw new IllegalStateException("unknown response [" + shardResponse + "]");
            }
        }
        return new DownsampleIndexerAction.Response(true, shardsResponses.length(), successfulShards, 0, numIndexed);
    }
    private class Async extends AsyncBroadcastAction {
        private final DownsampleIndexerAction.Request request;
        private final ActionListener<DownsampleIndexerAction.Response> listener;
        protected Async(Task task, DownsampleIndexerAction.Request request, ActionListener<DownsampleIndexerAction.Response> listener) {
            super(task, request, listener);
            this.request = request;
            this.listener = listener;
        }
        @Override
        protected void finishHim() {
            try {
                DownsampleIndexerAction.Response resp = newResponse(request, shardsResponses, clusterService.state());
                listener.onResponse(resp);
            } catch (Exception e) {
                listener.onFailure(e);
            }
        }
    }
}