### 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/test/java/org/elasticsearch/xpack/downsample/DownsampleActionSingleNodeTests.java
shard.shardId(),
            rollupIndex,
            config,
            new String[] { FIELD_NUMERIC_1, FIELD_NUMERIC_2 },
            new String[] {}
        );
        /*
         * Here we set the batch size and the total bytes in flight size to tiny numbers so that we are guaranteed to trigger the bulk
         * processor to reject some calls to add(), so that we can make sure RollupShardIndexer keeps trying until success.
         */
        indexer.rollupMaxBytesInFlight = ByteSizeValue.ofBytes(1024);
        indexer.rollupBulkSize = ByteSizeValue.ofBytes(512);
        indexer.execute();
    }
    private DateHistogramInterval randomInterval() {
        return ConfigTestHelpers.randomInterval();
    }
    private String randomDateForInterval(DateHistogramInterval interval) {
        long endTime = startTime + MAX_NUM_BUCKETS * interval.estimateMillis();
        return randomDateForRange(startTime, endTime);
    }
    private String randomDateForRange(long start, long end) {
        return DATE_FORMATTER.formatMillis(randomLongBetween(start, end));
    }
    private void bulkIndex(SourceSupplier sourceSupplier) throws IOException {
        bulkIndex(sourceIndex, sourceSupplier);
    }
    private void bulkIndex(String indexName, SourceSupplier sourceSupplier) throws IOException {
        BulkRequestBuilder bulkRequestBuilder = client().prepareBulk();
        bulkRequestBuilder.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);