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
if (stateToUpdate != null
            && stateToUpdate.state() == ShardState.SUCCESS
            && Objects.equals(newGeneration, stateToUpdate.generation()) == false) {
            if (updatedShardAssignments == null) {
                updatedShardAssignments = ImmutableOpenMap.builder();
            }
            updatedShardAssignments.put(shardId, stateToUpdate.withUpdatedGeneration(newGeneration));
        }
        return updatedShardAssignments;
    }
    /**
     * Removes record of running snapshot from cluster state and notifies the listener when this action is complete. This method is only
     * used when the snapshot fails for some reason. During normal operation the snapshot repository will remove the
     * {@link SnapshotsInProgress.Entry} from the cluster state once it's done finalizing the snapshot.
     *
     * @param snapshot       snapshot that failed
     * @param failure        exception that failed the snapshot
     * @param repositoryData repository data if the next finalization operation on the repository should be attempted or {@code null} if
     *                       no further actions should be executed
     */
    private void removeFailedSnapshotFromClusterState(Snapshot snapshot, Exception failure, @Nullable RepositoryData repositoryData) {
        assert failure != null : "Failure must be supplied";
        submitUnbatchedTask(REMOVE_SNAPSHOT_METADATA_TASK_SOURCE, new ClusterStateUpdateTask() {
            @Override
            public ClusterState execute(ClusterState currentState) {
                final ClusterState updatedState = stateWithoutSnapshot(currentState, snapshot);
                assert updatedState == currentState || endingSnapshots.contains(snapshot)
                    : "did not track [" + snapshot + "] in ending snapshots while removing it from the cluster state";
                
                return updateWithSnapshots(