I caused this by back porting #91016 earlier ... looking into a fix now 

**Build scan:**
https://gradle-enterprise.elastic.co/s/dnpt2zu6hqcs2/tests/:server:internalClusterTest/org.elasticsearch.indices.state.ReopenWhileClosingIT/testReopenDuringCloseOnMultipleIndices

**Reproduction line:**
```
./gradlew ':server:internalClusterTest' --tests "org.elasticsearch.indices.state.ReopenWhileClosingIT.testReopenDuringCloseOnMultipleIndices" -Dtests.seed=5BA9D289491D3843 -Dtests.locale=ar-LB -Dtests.timezone=Etc/GMT-0 -Druntime.java=8
```

**Applicable branches:**
7.17

**Reproduces locally?:**
Yes

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.indices.state.ReopenWhileClosingIT&tests.test=testReopenDuringCloseOnMultipleIndices

**Failure excerpt:**
```
java.lang.Exception: Test abandoned because suite timeout was reached.

  at __randomizedtesting.SeedInfo.seed([5BA9D289491D3843]:0)

```
server/src/internalClusterTest/java/org/elasticsearch/indices/state/ReopenWhileClosingIT.java
public class ReopenWhileClosingIT extends ESIntegTestCase {
    @Override
    protected Collection<Class<? extends Plugin>> nodePlugins() {
        return singletonList(MockTransportService.TestPlugin.class);
    }
    @Override
    protected int minimumNumberOfShards() {
        return 2;
    }
    public void testReopenDuringClose() throws Exception {
        List<String> dataOnlyNodes = internalCluster().startDataOnlyNodes(randomIntBetween(2, 3));
        final String indexName = "test";
        createIndexWithDocs(indexName, dataOnlyNodes);
        ensureYellowAndNoInitializingShards(indexName);
        final CountDownLatch block = new CountDownLatch(1);
        final Releasable releaseBlock = interceptVerifyShardBeforeCloseActions(indexName, block::countDown);
        ActionFuture<CloseIndexResponse> closeIndexResponse = client().admin().indices().prepareClose(indexName).execute();
        assertTrue("Waiting for index to have a closing blocked", block.await(60, TimeUnit.SECONDS));
        assertIndexIsBlocked(indexName);
        assertFalse(closeIndexResponse.isDone());
        assertAcked(client().admin().indices().prepareOpen(indexName));
        releaseBlock.close();
        assertFalse(closeIndexResponse.get().isAcknowledged());
        assertIndexIsOpened(indexName);
    }