Today if we detect concurrent modification of a snapshot repository then we mark it with `CORRUPTED_REPO_GEN` which blocks further writes to try and prevent additional damage to its contents. You can remove the marker by calling the register-repository API again, but this API will discard no-op re-registrations without taking any action. You can work around this by unregistering the repository first (which may be impossible if it's still in use for searchable snapshots) or by re-registering it with some trivial setting change (which seems hacky).

We should not consider it a no-op re-registration if the repository is currently marked with `CORRUPTED_REPO_GEN`, because doing this re-registration will re-read the repo contents and clear the corruption marker and therefore is not a no-op.
test/framework/src/main/java/org/elasticsearch/snapshots/AbstractSnapshotIntegTestCase.java
return failureCount;
    }
    public static void assertFileCount(Path dir, int expectedCount) throws IOException {
        final List<Path> found = new ArrayList<>();
        forEachFileRecursively(dir, ((path, basicFileAttributes) -> found.add(path)));
        assertEquals("Unexpected file count, found: [" + found + "].", expectedCount, found.size());
    }
    public static int numberOfFiles(Path dir) throws IOException {
        final AtomicInteger count = new AtomicInteger();
        forEachFileRecursively(dir, ((path, basicFileAttributes) -> count.incrementAndGet()));
        return count.get();
    }
    protected void stopNode(final String node) throws IOException {
        logger.info("--> stopping node {}", node);
        internalCluster().stopNode(node);
    }
    protected static String startDataNodeWithLargeSnapshotPool() {
        return internalCluster().startDataOnlyNode(LARGE_SNAPSHOT_POOL_SETTINGS);
    }
    public void waitForBlock(String node, String repository) throws Exception {
        logger.info("--> waiting for [{}] to be blocked on node [{}]", repository, node);
        MockRepository mockRepository = getRepositoryOnNode(repository, node);
        assertBusy(() -> assertTrue(mockRepository.blocked()), 30L, TimeUnit.SECONDS);
    }
    public static void blockMasterFromFinalizingSnapshotOnIndexFile(final String repositoryName) {
        AbstractSnapshotIntegTestCase.<MockRepository>getRepositoryOnMaster(repositoryName).setBlockAndFailOnWriteIndexFile();
    }
    public static void blockMasterOnWriteIndexFile(final String repositoryName) {
        AbstractSnapshotIntegTestCase.<MockRepository>getRepositoryOnMaster(repositoryName).setBlockOnWriteIndexFile();
    }