An incomplete shard snapshot will prevent a shard from moving away from a node (see `SnapshotInProgressAllocationDecider`). That means that when a shard snapshot completes it may become possible to perform some shard movements that previously were not possible, so we should trigger a reroute to start those movements. AFAICT we do not trigger such a reroute today.
server/src/main/java/org/elasticsearch/snapshots/SnapshotsService.java
if (snapshot.isClone()) {
                                if (snapshot.shardsByRepoShardId().isEmpty()) {
                                    
                                    if (initializingClones.contains(snapshot.snapshot())) {
                                        updatedEntriesForRepo.add(snapshot);
                                    } else {
                                        logger.debug("removing not yet start clone operation [{}]", snapshot);
                                        changed = true;
                                    }
                                } else {
                                    
                                    if (deletes.hasExecutingDeletion(repository)) {
                                        
                                        
                                        updatedEntriesForRepo.add(snapshot);
                                        continue;
                                    }
                                    ImmutableOpenMap.Builder<RepositoryShardId, ShardSnapshotStatus> clones = null;
                                    InFlightShardSnapshotStates inFlightShardSnapshotStates = null;
                                    for (Map.Entry<RepositoryShardId, ShardSnapshotStatus> failureEntry : knownFailures.entrySet()) {
                                        final RepositoryShardId repositoryShardId = failureEntry.getKey();
                                        final ShardSnapshotStatus existingStatus = snapshot.shardsByRepoShardId().get(repositoryShardId);
                                        if (ShardSnapshotStatus.UNASSIGNED_QUEUED.equals(existingStatus)) {
                                            if (inFlightShardSnapshotStates == null) {
                                                inFlightShardSnapshotStates = InFlightShardSnapshotStates.forEntries(updatedEntriesForRepo);
                                            }
                                            if (inFlightShardSnapshotStates.isActive(
                                                repositoryShardId.indexName(),
                                                repositoryShardId.shardId()
                                            )) {