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
@Override
                            public void onResponse(RepositoryData repositoryData) {
                                if (newFinalization) {
                                    finalizeSnapshotEntry(snapshot, metadata, repositoryData);
                                } else {
                                    runNextQueuedOperation(repositoryData, repoName, false);
                                }
                            }
                            @Override
                            public void onFailure(Exception e) {
                                submitUnbatchedTask("fail repo tasks for [" + repoName + "]", new FailPendingRepoTasksTask(repoName, e));
                            }
                        }
                    );
            } else {
                if (newFinalization) {
                    finalizeSnapshotEntry(snapshot, metadata, repositoryData);
                } else {
                    runNextQueuedOperation(repositoryData, repoName, false);
                }
            }
        } else {
            if (newFinalization) {
                repositoryOperations.addFinalization(snapshot, metadata);
            }
        }
    }
    /**
     * Try starting to run a snapshot finalization or snapshot delete for the given repository. If this method returns
     * {@code true} then snapshot finalizations and deletions for the repo may be executed. Once no more operations are