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
throw new AssertionError(e);
                                }
                            }
                        }
                    }
                    connection.sendRequest(requestId, action, request, options);
                }
            );
        }
        return Releasables.releaseOnce(release::countDown);
    }
    private static void assertIndexIsBlocked(final String... indices) {
        final ClusterState clusterState = client().admin().cluster().prepareState().get().getState();
        for (String index : indices) {
            assertThat(clusterState.metadata().indices().get(index).getState(), is(IndexMetadata.State.OPEN));
            assertThat(clusterState.routingTable().index(index), notNullValue());
            assertThat(
                "Index " + index + " must have only 1 block with [id=" + INDEX_CLOSED_BLOCK_ID + "]",
                clusterState.blocks()
                    .indices()
                    .getOrDefault(index, emptySet())
                    .stream()
                    .filter(clusterBlock -> clusterBlock.id() == INDEX_CLOSED_BLOCK_ID)
                    .count(),
                equalTo(1L)
            );
        }
    }
}