Java Code Examples for com.gemstone.gemfire.cache.Region#localInvalidate()

The following examples show how to use com.gemstone.gemfire.cache.Region#localInvalidate() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DestroyEntryMessage.java    From gemfirexd-oss with Apache License 2.0 6 votes vote down vote up
@Override
public void process(DistributionManager dm) {
  Region r = getRegion(dm.getSystem());
  if (r != null) {
    try {
      if (action == ExpirationAction.LOCAL_DESTROY) {
        r.localDestroy(key);
      } else if (action == ExpirationAction.DESTROY) {
        r.destroy(key);
      } else if (action == ExpirationAction.INVALIDATE) {
        r.invalidate(key);
      } else if (action == ExpirationAction.LOCAL_INVALIDATE) {
        r.localInvalidate(key);
      }
    } catch (Exception e) {
      dm.getLoggerI18n().warning(
          LocalizedStrings.DestroEntryMessage_FAILED_ATTEMPT_TO_DESTROY_OR_INVALIDATE_ENTRY_0_1_FROM_CONSOLE_AT_2,
          new Object[] {r.getFullPath(), key, this.getSender()});
    }
  }
}
 
Example 2
Source File: DestroyEntryMessage.java    From gemfirexd-oss with Apache License 2.0 6 votes vote down vote up
@Override
public void process(DistributionManager dm) {
  Region r = getRegion(dm.getSystem());
  if (r != null) {
    try {
      if (action == ExpirationAction.LOCAL_DESTROY) {
        r.localDestroy(key);
      } else if (action == ExpirationAction.DESTROY) {
        r.destroy(key);
      } else if (action == ExpirationAction.INVALIDATE) {
        r.invalidate(key);
      } else if (action == ExpirationAction.LOCAL_INVALIDATE) {
        r.localInvalidate(key);
      }
    } catch (Exception e) {
      dm.getLoggerI18n().warning(
          LocalizedStrings.DestroEntryMessage_FAILED_ATTEMPT_TO_DESTROY_OR_INVALIDATE_ENTRY_0_1_FROM_CONSOLE_AT_2,
          new Object[] {r.getFullPath(), key, this.getSender()});
    }
  }
}
 
Example 3
Source File: DeltaPropagationDUnitTest.java    From gemfirexd-oss with Apache License 2.0 5 votes vote down vote up
public static void doLocalOp(String op, String rName, String key) {
  try {
    Region r = cache.getRegion("/" + rName);
    assertNotNull(r);
    if (INVALIDATE.equals(op)) {
      r.localInvalidate(key);
    }
    else if (DESTROY.equals(op)) {
      r.localDestroy(key);
    }
  }
  catch (Exception e) {
    fail("failed in doLocalOp()", e);
  }
}
 
Example 4
Source File: SnapshotTest.java    From gemfirexd-oss with Apache License 2.0 5 votes vote down vote up
/** Invalidate an entry in the given region.
 *
 *  @param aRegion The region to use for invalidating an entry.
 *  @param key The key to invalidate.
 *  @param isLocalInvalidate True if the invalidate should be local, false otherwise.
 */
protected void invalidateEntry(Region aRegion, Object key, boolean isLocalInvalidate) {
  String callback = invalidateCallbackPrefix + ProcessMgr.getProcessId();
  if (isLocalInvalidate) { // do a local invalidate
    if (TestConfig.tab().getRandGen().nextBoolean()) { // local invalidate with callback
      Log.getLogWriter().info("invalidateEntry: local invalidate for " + key + " callback is " + callback
          + ", region is " + aRegion.getFullPath());
      aRegion.localInvalidate(key, callback);
      Log.getLogWriter().info("invalidateEntry: done with local invalidate for " + key);
    } else { // local invalidate without callback
      Log.getLogWriter().info("invalidateEntry: local invalidate for " + key + ", region is " + aRegion.getFullPath());
      aRegion.localInvalidate(key);
      Log.getLogWriter().info("invalidateEntry: done with local invalidate for " + key);
    }
  } else { // do a distributed invalidate
    if (TestConfig.tab().getRandGen().nextBoolean()) { // invalidate with callback
      Log.getLogWriter().info("invalidateEntry: invalidating key " + key + " callback is " + callback
          + ", region is " + aRegion.getFullPath());
      aRegion.invalidate(key, callback);
      Log.getLogWriter().info("invalidateEntry: done invalidating key " + key);
    } else { // invalidate without callback
      Log.getLogWriter().info("invalidateEntry: invalidating key " + key + ", aRegion is " + aRegion.getFullPath());
      aRegion.invalidate(key);
      Log.getLogWriter().info("invalidateEntry: done invalidating key " + key);
    }
  }
}
 
Example 5
Source File: SnapshotTest.java    From gemfirexd-oss with Apache License 2.0 5 votes vote down vote up
/** Invalidate an entry in the given region.
 *
 *  @param aRegion The region to use for invalidating an entry.
 *  @param key The key to invalidate.
 *  @param isLocalInvalidate True if the invalidate should be local, false otherwise.
 */
protected void invalidateEntry(Region aRegion, Object key, boolean isLocalInvalidate) {
  String callback = invalidateCallbackPrefix + ProcessMgr.getProcessId();
  if (isLocalInvalidate) { // do a local invalidate
    if (TestConfig.tab().getRandGen().nextBoolean()) { // local invalidate with callback
      Log.getLogWriter().info("invalidateEntry: local invalidate for " + key + " callback is " + callback
          + ", region is " + aRegion.getFullPath());
      aRegion.localInvalidate(key, callback);
      Log.getLogWriter().info("invalidateEntry: done with local invalidate for " + key);
    } else { // local invalidate without callback
      Log.getLogWriter().info("invalidateEntry: local invalidate for " + key + ", region is " + aRegion.getFullPath());
      aRegion.localInvalidate(key);
      Log.getLogWriter().info("invalidateEntry: done with local invalidate for " + key);
    }
  } else { // do a distributed invalidate
    if (TestConfig.tab().getRandGen().nextBoolean()) { // invalidate with callback
      Log.getLogWriter().info("invalidateEntry: invalidating key " + key + " callback is " + callback
          + ", region is " + aRegion.getFullPath());
      aRegion.invalidate(key, callback);
      Log.getLogWriter().info("invalidateEntry: done invalidating key " + key);
    } else { // invalidate without callback
      Log.getLogWriter().info("invalidateEntry: invalidating key " + key + ", aRegion is " + aRegion.getFullPath());
      aRegion.invalidate(key);
      Log.getLogWriter().info("invalidateEntry: done invalidating key " + key);
    }
  }
}
 
Example 6
Source File: DeltaPropagationDUnitTest.java    From gemfirexd-oss with Apache License 2.0 5 votes vote down vote up
public static void doLocalOp(String op, String rName, String key) {
  try {
    Region r = cache.getRegion("/" + rName);
    assertNotNull(r);
    if (INVALIDATE.equals(op)) {
      r.localInvalidate(key);
    }
    else if (DESTROY.equals(op)) {
      r.localDestroy(key);
    }
  }
  catch (Exception e) {
    fail("failed in doLocalOp()", e);
  }
}
 
Example 7
Source File: CQTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
/** Invalidate an entry in the given region.
 *
 *  @param aRegion The region to use for invalidating an entry.
 *  @param isLocalInvalidate True if the invalidate should be local, false otherwise.
 */
protected void invalidateEntry(Region aRegion, boolean isLocalInvalidate) {
  Object key = null;
  if (!isOldClient && TestConfig.tab().getRandGen().nextInt(1, 100) <= 50) { // do a putIfAbsent with null
    key = getNewKey();
    Log.getLogWriter().info("operation for " + key + ", invalidateEntry: putIfAbsent with null");
    Object returnValue = aRegion.putIfAbsent(key, null);
    Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with putIfAbsent with null, return value is " +
        TestHelper.toString(returnValue));
  } else {
   int beforeSize = aRegion.size();
    key = getExistingKey(aRegion, uniqueKeys, numThreadsInClients);
   if (key == null) {
      if (isSerialExecution && (beforeSize != 0))
         throw new TestException("getExistingKey returned " + key + ", but region size is " + beforeSize);
      Log.getLogWriter().info("invalidateEntry: No keys in region");
      return;
   }
   boolean containsKey = aRegion.containsKey(key);
   boolean containsValueForKey = aRegion.containsValueForKey(key);
   Log.getLogWriter().info("containsKey for " + key + ": " + containsKey);
   Log.getLogWriter().info("containsValueForKey for " + key + ": " + containsValueForKey);
   try {
      String callback = invalidateCallbackPrefix + ProcessMgr.getProcessId();
      if (isLocalInvalidate) { // do a local invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // local invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key + " callback is " + callback);
            aRegion.localInvalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         } else { // local invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key);
            aRegion.localInvalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         }
      } else { // do a distributed invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key + " callback is " + callback);
            aRegion.invalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         } else { // invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key);
            aRegion.invalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         }
      }

   } catch (com.gemstone.gemfire.cache.EntryNotFoundException e) {
      if (isSerialExecution)
         throw new TestException(TestHelper.getStackTrace(e));
      else {
         Log.getLogWriter().info("Caught " + e + " (expected with concurrent execution); continuing with test");
         return;
      }
   }
  }
  if (isSerialExecution) {
    // record the current state
    regionSnapshot.put(key, null);
  }

}
 
Example 8
Source File: KeyCallbackResolverTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public void localInvalidate(Region aRegion, Object keyName) {
  Object key = getKeyWrapper(keyName);
  Object callbackArg = getCallBackWrapper(keyName);
  aRegion.localInvalidate(key, callbackArg);
}
 
Example 9
Source File: ParRegColocation.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public void localInvalidate(Region aRegion, Object key) {
  checkContainsValueForKey(aRegion, key, true, "before local invalidate");
  aRegion.localInvalidate(key);
}
 
Example 10
Source File: P2PDeltaPropagationDUnitTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public static void invalidate() throws Exception
{
  Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
  r1.localInvalidate("KEY");
}
 
Example 11
Source File: PartitionedRegionPerfDUnitTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public PerfResults doGets(final String regionName, final Integer objectSize_) throws Exception {
	int objectSize = objectSize_.intValue();
	Cache cache = getCache();

	Region r = cache.getRegion(Region.SEPARATOR + regionName);
	
	boolean partitioned = false;
	if(r instanceof PartitionedRegion) {
		partitioned = true;
	}
	
               final int origLogLevel = setLogLevel(cache.getLogger(), LogWriterImpl.WARNING_LEVEL);                
	long startTime = System.currentTimeMillis();
	long endTime = startTime + RUN_LENGTH;
	int getCount = 0;
	int missCount = 0;
	int maxKey = TARGET_TOTAL_BYTES / objectSize;
	Object value = new byte[objectSize];;
	
	//load up the cache
	for(int i=0; i<maxKey; i++) {
		r.put(String.valueOf(i), value);
	}
	
	//localInvalidate doesn't work on PRs, and it's Mitch's fault.
	if(!partitioned) {
		for(int i=0; i<maxKey; i++) {
			r.localInvalidate(String.valueOf(i));
		}
		
	}
	
	value = null;
	while(System.currentTimeMillis() < endTime) {
                 for (int i=0; i<500; i++) {
		value = r.get(String.valueOf(getCount % maxKey));
		getCount++;
		if(value == null) {
			missCount++;
		}
		if(!partitioned) {
			r.localInvalidate(String.valueOf(getCount % maxKey));
		}
                 }
	}
	endTime = System.currentTimeMillis();
               setLogLevel(cache.getLogger(), origLogLevel);
               

	PerfResults results = new PerfResults();
	results.getCount = getCount;
	results.missCount = missCount;
	results.objectSize = objectSize;
	results.operationType = "GET";
	results.time = endTime - startTime;
	
	return results;
	
}
 
Example 12
Source File: DeltaTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
/** Invalidate an entry in the given region.
 *
 *  @param aRegion The region to use for invalidating an entry.
 *  @param isLocalInvalidate True if the invalidate should be local, false otherwise.
 */
protected void invalidateEntry(Region aReg, boolean isLocalInvalidate) {
   int beforeSize = aReg.size();
   Object key = getExistingKey(aReg, uniqueKeys, numThreadsInClients);
   if (key == null) {
      if (isSerialExecution && (beforeSize != 0))
         throw new TestException("getExistingKey returned " + key + ", but region size is " + beforeSize);
      Log.getLogWriter().info("invalidateEntry: No keys in region");
      return;
   }
   boolean containsKey = aReg.containsKey(key);
   boolean containsValueForKey = aReg.containsValueForKey(key);
   Log.getLogWriter().info("containsKey for " + key + ": " + containsKey);
   Log.getLogWriter().info("containsValueForKey for " + key + ": " + containsValueForKey);
   try {
      String callback = invalidateCallbackPrefix + ProcessMgr.getProcessId();
      if (isLocalInvalidate) { // do a local invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // local invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key + " callback is " + callback);
            aReg.localInvalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         } else { // local invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key);
            aReg.localInvalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         }
      } else { // do a distributed invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key + " callback is " + callback);
            aReg.invalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         } else { // invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key);
            aReg.invalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         }
      }

      // validation
      if (isSerialExecution || uniqueKeys) {
         // record the current state
         regionSnapshot.put(key, null);
      }
   } catch (com.gemstone.gemfire.cache.EntryNotFoundException e) {
      if (isSerialExecution || uniqueKeys)
         throw new TestException(TestHelper.getStackTrace(e));
      else {
         Log.getLogWriter().info("Caught " + e + " (expected with concurrent execution); continuing with test");
         return;
      }
   }
}
 
Example 13
Source File: CQTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
/** Invalidate an entry in the given region.
 *
 *  @param aRegion The region to use for invalidating an entry.
 *  @param isLocalInvalidate True if the invalidate should be local, false otherwise.
 */
protected void invalidateEntry(Region aRegion, boolean isLocalInvalidate) {
  Object key = null;
  if (!isOldClient && TestConfig.tab().getRandGen().nextInt(1, 100) <= 50) { // do a putIfAbsent with null
    key = getNewKey();
    Log.getLogWriter().info("operation for " + key + ", invalidateEntry: putIfAbsent with null");
    Object returnValue = aRegion.putIfAbsent(key, null);
    Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with putIfAbsent with null, return value is " +
        TestHelper.toString(returnValue));
  } else {
   int beforeSize = aRegion.size();
    key = getExistingKey(aRegion, uniqueKeys, numThreadsInClients);
   if (key == null) {
      if (isSerialExecution && (beforeSize != 0))
         throw new TestException("getExistingKey returned " + key + ", but region size is " + beforeSize);
      Log.getLogWriter().info("invalidateEntry: No keys in region");
      return;
   }
   boolean containsKey = aRegion.containsKey(key);
   boolean containsValueForKey = aRegion.containsValueForKey(key);
   Log.getLogWriter().info("containsKey for " + key + ": " + containsKey);
   Log.getLogWriter().info("containsValueForKey for " + key + ": " + containsValueForKey);
   try {
      String callback = invalidateCallbackPrefix + ProcessMgr.getProcessId();
      if (isLocalInvalidate) { // do a local invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // local invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key + " callback is " + callback);
            aRegion.localInvalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         } else { // local invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key);
            aRegion.localInvalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         }
      } else { // do a distributed invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key + " callback is " + callback);
            aRegion.invalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         } else { // invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key);
            aRegion.invalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         }
      }

   } catch (com.gemstone.gemfire.cache.EntryNotFoundException e) {
      if (isSerialExecution)
         throw new TestException(TestHelper.getStackTrace(e));
      else {
         Log.getLogWriter().info("Caught " + e + " (expected with concurrent execution); continuing with test");
         return;
      }
   }
  }
  if (isSerialExecution) {
    // record the current state
    regionSnapshot.put(key, null);
  }

}
 
Example 14
Source File: KeyCallbackResolverTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public void localInvalidate(Region aRegion, Object keyName) {
  Object key = getKeyWrapper(keyName);
  Object callbackArg = getCallBackWrapper(keyName);
  aRegion.localInvalidate(key, callbackArg);
}
 
Example 15
Source File: ParRegColocation.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public void localInvalidate(Region aRegion, Object key) {
  checkContainsValueForKey(aRegion, key, true, "before local invalidate");
  aRegion.localInvalidate(key);
}
 
Example 16
Source File: P2PDeltaPropagationDUnitTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public static void invalidate() throws Exception
{
  Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
  r1.localInvalidate("KEY");
}
 
Example 17
Source File: PartitionedRegionPerfDUnitTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
public PerfResults doGets(final String regionName, final Integer objectSize_) throws Exception {
	int objectSize = objectSize_.intValue();
	Cache cache = getCache();

	Region r = cache.getRegion(Region.SEPARATOR + regionName);
	
	boolean partitioned = false;
	if(r instanceof PartitionedRegion) {
		partitioned = true;
	}
	
               final int origLogLevel = setLogLevel(cache.getLogger(), LogWriterImpl.WARNING_LEVEL);                
	long startTime = System.currentTimeMillis();
	long endTime = startTime + RUN_LENGTH;
	int getCount = 0;
	int missCount = 0;
	int maxKey = TARGET_TOTAL_BYTES / objectSize;
	Object value = new byte[objectSize];;
	
	//load up the cache
	for(int i=0; i<maxKey; i++) {
		r.put(String.valueOf(i), value);
	}
	
	//localInvalidate doesn't work on PRs, and it's Mitch's fault.
	if(!partitioned) {
		for(int i=0; i<maxKey; i++) {
			r.localInvalidate(String.valueOf(i));
		}
		
	}
	
	value = null;
	while(System.currentTimeMillis() < endTime) {
                 for (int i=0; i<500; i++) {
		value = r.get(String.valueOf(getCount % maxKey));
		getCount++;
		if(value == null) {
			missCount++;
		}
		if(!partitioned) {
			r.localInvalidate(String.valueOf(getCount % maxKey));
		}
                 }
	}
	endTime = System.currentTimeMillis();
               setLogLevel(cache.getLogger(), origLogLevel);
               

	PerfResults results = new PerfResults();
	results.getCount = getCount;
	results.missCount = missCount;
	results.objectSize = objectSize;
	results.operationType = "GET";
	results.time = endTime - startTime;
	
	return results;
	
}
 
Example 18
Source File: DeltaTest.java    From gemfirexd-oss with Apache License 2.0 4 votes vote down vote up
/** Invalidate an entry in the given region.
 *
 *  @param aRegion The region to use for invalidating an entry.
 *  @param isLocalInvalidate True if the invalidate should be local, false otherwise.
 */
protected void invalidateEntry(Region aReg, boolean isLocalInvalidate) {
   int beforeSize = aReg.size();
   Object key = getExistingKey(aReg, uniqueKeys, numThreadsInClients);
   if (key == null) {
      if (isSerialExecution && (beforeSize != 0))
         throw new TestException("getExistingKey returned " + key + ", but region size is " + beforeSize);
      Log.getLogWriter().info("invalidateEntry: No keys in region");
      return;
   }
   boolean containsKey = aReg.containsKey(key);
   boolean containsValueForKey = aReg.containsValueForKey(key);
   Log.getLogWriter().info("containsKey for " + key + ": " + containsKey);
   Log.getLogWriter().info("containsValueForKey for " + key + ": " + containsValueForKey);
   try {
      String callback = invalidateCallbackPrefix + ProcessMgr.getProcessId();
      if (isLocalInvalidate) { // do a local invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // local invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key + " callback is " + callback);
            aReg.localInvalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         } else { // local invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: local invalidate for " + key);
            aReg.localInvalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done with local invalidate for " + key);
         }
      } else { // do a distributed invalidate
         if (TestConfig.tab().getRandGen().nextBoolean()) { // invalidate with callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key + " callback is " + callback);
            aReg.invalidate(key, callback);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         } else { // invalidate without callback
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: invalidating key " + key);
            aReg.invalidate(key);
            Log.getLogWriter().info("operation for " + key + ", invalidateEntry: done invalidating key " + key);
         }
      }

      // validation
      if (isSerialExecution || uniqueKeys) {
         // record the current state
         regionSnapshot.put(key, null);
      }
   } catch (com.gemstone.gemfire.cache.EntryNotFoundException e) {
      if (isSerialExecution || uniqueKeys)
         throw new TestException(TestHelper.getStackTrace(e));
      else {
         Log.getLogWriter().info("Caught " + e + " (expected with concurrent execution); continuing with test");
         return;
      }
   }
}