protected void invalidateLocally(Integer bucketId, EntryEventImpl event)
      throws EntryNotFoundException, PrimaryBucketException, ForceReattemptException {
    if (logger.isDebugEnabled()) {
      logger.debug("invalidateLocally: bucketId={}{}{} for key={}",
          partitionedRegion.getPRId(), PartitionedRegion.BUCKET_ID_SEPARATOR, bucketId,
          event.getKey());
    }
    final BucketRegion bucketRegion = getInitializedBucketForId(event.getKey(), bucketId);
    try {
      event.setRegion(bucketRegion);
      event.setOldValueFromRegion();
      bucketRegion.basicInvalidate(event);

      // bug 34361: don't send a reply if bucket was destroyed during the op
      bucketRegion.checkReadiness();

      // this is now done elsewhere
      // event.setRegion(this.partitionedRegion);
      // this.partitionedRegion.notifyBridgeClients(
      // EnumListenerEvent.AFTER_INVALIDATE, event);
    } catch (RegionDestroyedException rde) {
      checkRegionDestroyedOnBucket(bucketRegion, event.isOriginRemote(), rde);
    }
  }
Handles the local request to invalidate the key from this region. <br>
Steps: <br>
1) Locates the bucket region. If it doesnt find the actual bucket, it means that this bucket is
remapped to some other node and remappedBucketException is thrown <br>
2) get the existing value for the key from bucket region <br>
3) if step 2 returns null, throw EntryNotFoundException <br>
4) if step 2 returns non-null value, perform invalidate on the bucket region and use value from
step 2 in step 5 <br>
5) updateBucket2Size if bucket is on more than 1 node or else bucket listners would take care
of size update. <br>

@param bucketId the bucketId for the key
@param event the event that prompted this action
@throws ForceReattemptException if bucket region is null
@throws EntryNotFoundException if entry is not found for the key
@throws PrimaryBucketException if the locally managed buffer is not primary
geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionDataStore.java