@Override
  public boolean hasSeenEvent(EventID eventID, InternalCacheEvent tagHolder) {
    if (eventID == null) {
      return false;
    }

    EventSequenceNumberHolder evh = getSequenceHolderForEvent(eventID);
    if (evh == null) {
      return false;
    }

    synchronized (evh) {
      if (evh.isRemoved() || evh.getLastSequenceNumber() < eventID.getSequenceID()) {
        return false;
      }
      Pair<Boolean, String> shouldLogPreviouslySeenEvent =
          shouldLogPreviouslySeenEvent(tagHolder, evh);
      if (shouldLogPreviouslySeenEvent.getLeft()) {
        logger.info(EVENT_HAS_PREVIOUSLY_BEEN_SEEN, region.getName(),
            tagHolder == null ? "unknown" : ((EntryEventImpl) tagHolder).getKey(),
            tagHolder == null ? "unknown" : tagHolder.getOperation(), eventID.expensiveToString(),
            evh.getLastSequenceNumber());
      } else {
        if (logger.isDebugEnabled()) {
          if (tagHolder == null) {
            logger.debug(IGNORING_PREVIOUSLY_SEEN_EVENT_PREFIX,
                shouldLogPreviouslySeenEvent.getRight());
          } else {
            logger.debug(IGNORING_PREVIOUSLY_SEEN_EVENT, shouldLogPreviouslySeenEvent.getRight(),
                region.getName(), ((EntryEventImpl) tagHolder).getKey(), tagHolder.getOperation(),
                tagHolder.getEventId().expensiveToString(), evh.getLastSequenceNumber());
          }
        }
      }
      // bug #44956 - recover version tag for duplicate event
      if (evh.getLastSequenceNumber() == eventID.getSequenceID() && tagHolder != null
          && evh.getVersionTag() != null) {
        ((EntryEventImpl) tagHolder).setVersionTag(evh.getVersionTag());
      }

      // Increment the previously seen events statistic
      region.getCachePerfStats().incPreviouslySeenEvents();

      return true;
    }
  }
Record a version tag for a bulk operation.
geode-core/src/main/java/org/apache/geode/internal/cache/event/DistributedEventTracker.java