### CI Link

https://gradle-enterprise.elastic.co/s/jw2osfn3o4ork

### Repro line

`gradlew ':x-pack:plugin:esql:internalClusterTest' --tests "org.elasticsearch.xpack.esql.action.EsqlActionTaskIT.testCancelRead" -Dtests.seed=F9D81006206BDA07 -Dtests.locale=und -Dtests.timezone=CST -Druntime.java=20`

### Does it reproduce?

No

### Applicable branches

main

### Failure history

_No response_

### Failure excerpt

This doesn't reproduce, even though I've tried using both seeds (from inside IntelliJ) and running the test multiple times with other random seeds.

```
org.elasticsearch.xpack.esql.action.EsqlActionTaskIT > testCancelRead FAILED
    java.lang.Error: Maximum permit count exceeded
        at __randomizedtesting.SeedInfo.seed([F9D81006206BDA07:6CF5A28298786366]:0)
        at java.base/java.util.concurrent.Semaphore$Sync.tryReleaseShared(Semaphore.java:198)
        at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1146)
        at java.base/java.util.concurrent.Semaphore.release(Semaphore.java:619)
        at org.elasticsearch.xpack.esql.action.EsqlActionTaskIT.cancelTask(EsqlActionTaskIT.java:200)
        at org.elasticsearch.xpack.esql.action.EsqlActionTaskIT.testCancelRead(EsqlActionTaskIT.java:161)
```
x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionTaskIT.java
assertCancelled(response);
    }
    private ActionFuture<EsqlQueryResponse> startEsql() {
        scriptPermits.drainPermits();
        scriptPermits.release(between(1, 10));
        var pragmas = new QueryPragmas(Settings.builder().put("data_partitioning", "shard").put("page_size", PAGE_SIZE).build());
        return new EsqlQueryRequestBuilder(client(), EsqlQueryAction.INSTANCE).query("from test | stats sum(pause_me)")
            .pragmas(pragmas)
            .execute();
    }
    private void cancelTask(TaskId taskId) {
        CancelTasksRequest request = new CancelTasksRequest().setTargetTaskId(taskId).setReason("test cancel");
        request.setWaitForCompletion(false);
        client().admin().cluster().execute(CancelTasksAction.INSTANCE, request).actionGet();
        scriptPermits.release(Integer.MAX_VALUE);
        request = new CancelTasksRequest().setTargetTaskId(taskId).setReason("test cancel");
        request.setWaitForCompletion(true);
        client().admin().cluster().execute(CancelTasksAction.INSTANCE, request).actionGet();
    }
    /**
    * Fetches tasks until it finds all of them are "starting".
    */
    private List<TaskInfo> getTasksStarting() throws Exception {
        List<TaskInfo> foundTasks = new ArrayList<>();
        assertBusy(() -> {
            List<TaskInfo> tasks = client().admin()
                .cluster()
                .prepareListTasks()
                .setActions(DriverTaskRunner.ACTION_NAME)
                .setDetailed(true)