private void checkForConsistencyErrors() {
    Map<Object, Object> r0Contents = vm0.invoke(ClearRvvLockingDUnitTest::getRegionContents);
    Map<Object, Object> r1Contents = vm1.invoke(ClearRvvLockingDUnitTest::getRegionContents);

    String key = THE_KEY;
    softly.assertThat(r1Contents.get(key)).as("region contents are not consistent for key %s", key)
        .isEqualTo(r0Contents.get(key));
    softly.assertThat(checkRegionEntry(vm1, key))
        .as("region entries are not consistent for key %s", key)
        .isEqualTo(checkRegionEntry(vm0, key));

    for (int subi = 1; subi < 3; subi++) {
      String subkey = key + "-" + subi;
      if (r0Contents.containsKey(subkey)) {
        softly.assertThat(r1Contents.get(subkey))
            .as("region contents are not consistent for key %s", subkey)
            .isEqualTo(r0Contents.get(subkey));
      } else {
        softly.assertThat(r1Contents).as("expected containsKey for %s to return false", subkey)
            .doesNotContainKey(subkey);
      }
    }
  }
Test class to verify proper RVV locking interaction between entry operations such as PUT/REMOVE
and the CLEAR region operation

GEODE-599: After an operation completed, it would unlock the RVV. This was occurring before the
operation was distributed to other members which created a window in which another operation
could be performed prior to that operation being distributed.

The fix for GEODE-599 was to not release the lock until after distributing the operation to the
other members.
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClearRvvLockingDUnitTest.java