**Build scan:**
https://gradle-enterprise.elastic.co/s/dxnvahurwubcu/tests/:server:internalClusterTest/org.elasticsearch.action.admin.indices.create.CreateIndexIT/testCreateAndDeleteIndexConcurrently

**Reproduction line:**
```
./gradlew ':server:internalClusterTest' --tests "org.elasticsearch.action.admin.indices.create.CreateIndexIT.testCreateAndDeleteIndexConcurrently" -Dtests.seed=3ED3285ADA7A0152 -Dtests.locale=is -Dtests.timezone=Africa/Tunis -Druntime.java=20
```

**Applicable branches:**
main, 8.8

**Reproduces locally?:**
No

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.action.admin.indices.create.CreateIndexIT&tests.test=testCreateAndDeleteIndexConcurrently

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

  at __randomizedtesting.SeedInfo.seed([3ED3285ADA7A0152]:0)

```
server/src/internalClusterTest/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java
handler.messageReceived(
                        request,
                        new TestTransportChannel(
                            new ChannelActionListener<>(channel).delegateResponse(
                                (l, e) -> fail(e, "recovery should succeed on first attempt")
                            )
                        ),
                        task
                    );
                    recoveryClusterStateDelayListeners.onStartRecovery();
                }
            );
            recoveryClusterStateDelayListeners.addCleanup(primaryNodeTransportService::clearInboundRules);
            final var replicaClusterService = internalCluster().getInstance(ClusterService.class, replicaNode);
            final ClusterStateListener clusterStateListener = event -> {
                final var primaryProceedListener = recoveryClusterStateDelayListeners.getClusterStateDelayListener(event.state().version());
                final var indexRoutingTable = event.state().routingTable().index(indexName);
                assertNotNull(indexRoutingTable);
                final var indexShardRoutingTable = indexRoutingTable.shard(0);
                if (indexShardRoutingTable.size() == 2 && indexShardRoutingTable.getAllInitializingShards().isEmpty() == false) {
                    
                    
                    recoveryClusterStateDelayListeners.delayUntilRecoveryStart(primaryProceedListener);
                } else {
                    
                    primaryProceedListener.onResponse(null);
                }
            };
            replicaClusterService.addListener(clusterStateListener);
            recoveryClusterStateDelayListeners.addCleanup(() -> replicaClusterService.removeListener(clusterStateListener));