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.
server/src/internalClusterTest/java/org/elasticsearch/snapshots/ConcurrentSnapshotsIT.java
final String dataNode = internalCluster().startDataOnlyNode();
        final String repository = "test-repo";
        createRepository(repository, "mock");
        final String indexName = "test-idx";
        createIndexWithContent(indexName);
        final String fullSnapshot = "full-snapshot";
        createFullSnapshot(repository, fullSnapshot);
        indexDoc(indexName, "some_id", "foo", "bar");
        blockAndFailDataNode(repository, dataNode);
        final ActionFuture<CreateSnapshotResponse> snapshotFutureFailure = startFullSnapshot(repository, "failing-snapshot");
        awaitNumberOfSnapshotsInProgress(1);
        waitForBlock(dataNode, repository);
        final ActionFuture<CreateSnapshotResponse> snapshotFutureSuccess = startFullSnapshot(repository, "successful-snapshot");
        awaitNumberOfSnapshotsInProgress(2);
        unblockNode(repository, dataNode);
        assertSuccessful(snapshotFutureSuccess);
        final SnapshotInfo failedSnapshot = snapshotFutureFailure.get().getSnapshotInfo();
        assertEquals(SnapshotState.PARTIAL, failedSnapshot.state());
        final SnapshotsStatusResponse snapshotsStatusResponse1 = clusterAdmin().prepareSnapshotStatus(repository)
            .setSnapshots(fullSnapshot)
            .get();
        final String tmpSnapshot = "snapshot-tmp";
        createFullSnapshot(repository, tmpSnapshot);
        assertAcked(startDeleteSnapshot(repository, tmpSnapshot).get());
        final SnapshotsStatusResponse snapshotsStatusResponse2 = clusterAdmin().prepareSnapshotStatus(repository)
            .setSnapshots(fullSnapshot)
            .get();
        assertEquals(snapshotsStatusResponse1, snapshotsStatusResponse2);
        assertAcked(startDeleteSnapshot(repository, "successful-snapshot").get());
        final SnapshotsStatusResponse snapshotsStatusResponse3 = clusterAdmin().prepareSnapshotStatus(repository)