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]