**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/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java
private final Store store;
        private final StopWatch stopWatch;
        private final int translogOps;
        
        
        
        
        private ShardRecoveryPlan shardRecoveryPlan;
        FileBasedRecoveryContext(Store store, StopWatch stopWatch, ShardRecoveryPlan shardRecoveryPlan) {
            this.store = store;
            this.stopWatch = stopWatch;
            this.translogOps = shardRecoveryPlan.getTranslogOps();
            this.shardRecoveryPlan = shardRecoveryPlan;
        }
        private void sendShardRecoveryPlanFileInfo(ActionListener<Void> fileInfoListener) {
            recoveryTarget.receiveFileInfo(
                shardRecoveryPlan.getFilesToRecoverNames(),
                shardRecoveryPlan.getFilesToRecoverSizes(),
                shardRecoveryPlan.getFilesPresentInTargetNames(),
                shardRecoveryPlan.getFilesPresentInTargetSizes(),
                shardRecoveryPlan.getTranslogOps(),
                fileInfoListener
            );
        }
        void run(ActionListener<SendFileResult> listener) {
            cancellableThreads.checkForCancel();
            SubscribableListener
                
                .newForked(this::sendShardRecoveryPlanFileInfo)