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.
test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java
} catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            fail(e);
        }
    }
    public static void safeSleep(long millis) {
        try {
            Thread.sleep(millis);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            fail(e);
        }
    }
    protected static boolean isTurkishLocale() {
        return Locale.getDefault().getLanguage().equals(new Locale("tr").getLanguage())
            || Locale.getDefault().getLanguage().equals(new Locale("az").getLanguage());
    }
    public static <T> T fail(Throwable t, String msg, Object... args) {
        throw new AssertionError(org.elasticsearch.common.Strings.format(msg, args), t);
    }
    public static <T> T fail(Throwable t) {
        return fail(t, "unexpected");
    }
    @SuppressWarnings("unchecked")
    public static <T> T asInstanceOf(Class<T> clazz, Object o) {
        assertThat(o, Matchers.instanceOf(clazz));
        return (T) o;
    }
}