@Test
  public void testRecoverAfterConflict() {
    vm0.invoke(() -> {
      createReplicateRegion(regionName, getDiskDirs(getVMId()));
      putEntry("A", "B");
      getCache().close();
    });

    vm1.invoke(() -> {
      createReplicateRegion(regionName, getDiskDirs(getVMId()));
      putEntry("A", "B");
    });

    vm0.invoke(() -> {
      try (IgnoredException ie = addIgnoredException(ConflictingPersistentDataException.class)) {
        // this should cause a conflict
        Throwable thrown = catchThrowable(() -> {
          createReplicateRegion(regionName, getDiskDirs(getVMId()));
        });
        assertThat(thrown).isInstanceOf(ConflictingPersistentDataException.class);
        InternalDistributedSystem.getAnyInstance().getCache().close();
      }
    });

    vm1.invoke(() -> getCache().close());

    vm0.invoke(() -> {
      // This should work now
      createReplicateRegion(regionName, getDiskDirs(getVMId()));
      updateEntry("A", "C");
    });

    // Now make sure vm1 gets a conflict
    vm1.invoke(() -> {
      try (IgnoredException ie = addIgnoredException(ConflictingPersistentDataException.class)) {
        // this should cause a conflict
        Throwable thrown = catchThrowable(() -> {
          createReplicateRegion(regionName, getDiskDirs(getVMId()));
        });
        assertThat(thrown).isInstanceOf(ConflictingPersistentDataException.class);
      }
    });
  }
Tests to make sure that after we get a conflicting persistent data exception, we can still
recover.
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRecoveryOrderDUnitTest.java