Today we log a "deleting snapshots [...] from repository [...]" message at INFO level [almost the first thing](https://github.com/elastic/elasticsearch/blob/dfaec0dbf0c8a0ba2912381334019725848f1f5a/server/src/main/java/org/elasticsearch/snapshots/SnapshotsService.java#L1886-L1888) when we start the deletion. However, the requested snapshots may not exist or they may be wildcards to be matched against actual snapshots. In these cases, the log message is either misleading or insuffiicent. Instead we should log the message after we have successfully added the delete to the cluster state similar to how the [logging works for snapshot creation](https://github.com/elastic/elasticsearch/blob/f77c16b78bab5e9f3ee24974aeba408e254e8c94/server/src/main/java/org/elasticsearch/snapshots/SnapshotsService.java#L3804).
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(