nabarunnag commented on a change in pull request #6362:
URL: https://github.com/apache/geode/pull/6362#discussion_r623392928



##########
File path: 
geode-core/src/main/java/org/apache/geode/internal/cache/event/DistributedEventTracker.java
##########
@@ -356,22 +363,58 @@ public boolean hasSeenEvent(EventID eventID, 
InternalCacheEvent tagHolder) {
       if (evh.isRemoved() || evh.getLastSequenceNumber() < 
eventID.getSequenceID()) {
         return false;
       }
-      // log at fine because partitioned regions can send event multiple times
-      // during normal operation during bucket region initialization
-      if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_BRIDGE_SERVER_VERBOSE)) 
{
-        logger.trace(LogMarker.DISTRIBUTION_BRIDGE_SERVER_VERBOSE,
-            "Cache encountered replay of event with ID {}.  Highest recorded 
for this source is {}",
-            eventID, evh.getLastSequenceNumber());
+      if (shouldLogPreviouslySeenEvent(tagHolder, evh)) {
+        logger.info(EVENT_HAS_PREVIOUSLY_BEEN_SEEN, region.getName(),
+            tagHolder == null ? "unknown" : ((EntryEventImpl) 
tagHolder).getKey(),
+            tagHolder == null ? "unknown" : tagHolder.getOperation(), 
eventID.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;
     }
   }
 
+  private boolean shouldLogPreviouslySeenEvent(InternalCacheEvent event,
+      EventSequenceNumberHolder evh) {
+    boolean shouldLogSeenEvent = true;
+    String message = null;

Review comment:
       This is a case in transactions. This is detailed in the method:
   ```java
     /**
      * has the Region's event state seen this event? Most checks should use 
the method that takes an
      * Event, not an ID, but with transactions we do not have an event at the 
time the check needs to
      * be made. Consequently, this method may cause events to be recorded that 
would otherwise be
      * ignored.
      *
      * @param eventID the identifier of the event
      * @return true if the Region's event state has seen the event
      */
     @Override
     public boolean hasSeenEvent(EventID eventID) {
       return getEventTracker().hasSeenEvent(eventID);
     }
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to