A user (on 7.17.7) reported to me a situation where they were attempting to delete a snapshot and would get the log message `deleting snapshots [snapshot-test] from repository [my-snapshots]` but then no further messages at `INFO` or above; enabling some internal logging indicated some low-level timeouts:

```
[DEBUG][com.amazonaws.latency    ] [instance-0123456789] MaxRetriesExceeded=[true], ServiceName=[Amazon S3], ServiceEndpoint=[https://REDACTED/], Exception=[java.net.SocketTimeoutException: Read timed out, java.net.SocketTimeoutException: Read timed out, java.net.SocketTimeoutException: Read timed out, java.net.SocketTimeoutException: Read timed out],...
```

This was enough for the user to go and investigate some performance issues in their repository, but I find the lack of logging concerning. Eventually the cluster state contains no ongoing snapshot deletion, but there is nothing in the logs to indicate that anything didn't work. The deletion API request had already timed out by this point so we can't return an error that way either. I'm opening this issue to make sure we investigate the missing logging.
server/src/main/java/org/elasticsearch/snapshots/SnapshotsService.java
/**
     * Determine the number of shards in each index of a clone operation and update the cluster state accordingly.
     *
     * @param repository     repository to run operation on
     * @param cloneEntry     clone operation in the cluster state
     */
    private void startCloning(Repository repository, SnapshotsInProgress.Entry cloneEntry) {
        final Collection<IndexId> indices = cloneEntry.indices().values();
        final SnapshotId sourceSnapshot = cloneEntry.source();
        final Snapshot targetSnapshot = cloneEntry.snapshot();
        final Executor executor = threadPool.executor(ThreadPool.Names.SNAPSHOT);
        
        final Consumer<Exception> onFailure = e -> {
            endingSnapshots.add(targetSnapshot);
            initializingClones.remove(targetSnapshot);
            logger.info(() -> "Failed to start snapshot clone [" + cloneEntry + "]", e);
            removeFailedSnapshotFromClusterState(targetSnapshot, e, null);
        };
        
        
        final ListenableFuture<SnapshotInfo> snapshotInfoListener = new ListenableFuture<>();
        repository.getSnapshotInfo(sourceSnapshot, snapshotInfoListener);
        final ListenableFuture<Collection<Tuple<IndexId, Integer>>> allShardCountsListener = new ListenableFuture<>();
        final GroupedActionListener<Tuple<IndexId, Integer>> shardCountListener = new GroupedActionListener<>(
            indices.size(),
            allShardCountsListener
        );
        snapshotInfoListener.addListener(ActionListener.wrap(snapshotInfo -> {
            for (IndexId indexId : indices) {
                if (RestoreService.failed(snapshotInfo, indexId.getName())) {