### 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
import org.elasticsearch.script.ScriptContext;
import org.elasticsearch.script.ScriptEngine;
import org.elasticsearch.search.lookup.SearchLookup;
import org.elasticsearch.tasks.TaskCancelledException;
import org.elasticsearch.tasks.TaskId;
import org.elasticsearch.tasks.TaskInfo;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xcontent.json.JsonXContent;
import org.elasticsearch.xpack.esql.plugin.QueryPragmas;
import org.junit.Before;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import static org.hamcrest.Matchers.either;
import static org.hamcrest.Matchers.emptyIterable;
import static org.hamcrest.Matchers.emptyOrNullString;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
import static org.hamcrest.Matchers.not;
/**
 * Tests that we expose a reasonable task status.
 */
public class EsqlActionTaskIT extends AbstractEsqlIntegTestCase {