This is an automated email from the ASF dual-hosted git repository. boglesby pushed a commit to branch feature/GEODE-9138-revert in repository https://gitbox.apache.org/repos/asf/geode.git
commit 12cd50807dd71a22ad63e4e227e0540a1408e38e Author: Barry Oglesby <bogle...@pivotal.io> AuthorDate: Sat May 1 09:49:17 2021 -0700 Revert "GEODE-9138: Modified hasSeenEvent to log the message if necessary and and increment a stat (#6362)" This reverts commit d15601d16becbd483e0a66b86d78f8ab067736b8. --- .../DistributedEventTrackerIntegrationTest.java | 146 --------------------- .../apache/geode/internal/cache/BucketRegion.java | 4 - .../geode/internal/cache/CachePerfStats.java | 17 +-- .../geode/internal/cache/DistributedRegion.java | 2 +- .../geode/internal/cache/EntryEventImpl.java | 2 - .../apache/geode/internal/cache/LocalRegion.java | 11 +- .../geode/internal/cache/PartitionedRegion.java | 4 - .../internal/cache/PartitionedRegionStats.java | 4 - .../geode/internal/cache/RegionPerfStats.java | 6 - .../cache/event/DistributedEventTracker.java | 87 ++++-------- .../cache/tier/sockets/command/PutAll80.java | 2 +- .../cache/tier/sockets/command/RemoveAll.java | 2 +- .../geode/internal/cache/CachePerfStatsTest.java | 8 -- .../geode/internal/cache/RegionPerfStatsTest.java | 7 - .../cache/event/DistributedEventTrackerTest.java | 18 +-- .../cache/event/EventTrackerExpiryTaskTest.java | 8 +- geode-docs/reference/statistics_list.html.md.erb | 1 - 17 files changed, 40 insertions(+), 289 deletions(-) diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/event/DistributedEventTrackerIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/event/DistributedEventTrackerIntegrationTest.java deleted file mode 100644 index d20eb66..0000000 --- a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/event/DistributedEventTrackerIntegrationTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.internal.cache.event; - -import static org.apache.geode.cache.RegionShortcut.PARTITION; -import static org.apache.geode.cache.RegionShortcut.REPLICATE; -import static org.apache.geode.internal.cache.event.DistributedEventTracker.EVENT_HAS_PREVIOUSLY_BEEN_SEEN_PREFIX; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.Arrays; -import java.util.Collection; -import java.util.Optional; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import org.apache.geode.cache.Operation; -import org.apache.geode.cache.partition.PartitionRegionHelper; -import org.apache.geode.distributed.internal.InternalDistributedSystem; -import org.apache.geode.internal.cache.BucketRegion; -import org.apache.geode.internal.cache.DistributedRegion; -import org.apache.geode.internal.cache.EntryEventImpl; -import org.apache.geode.internal.cache.EventID; -import org.apache.geode.internal.cache.LocalRegion; -import org.apache.geode.internal.cache.PartitionedRegion; -import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID; -import org.apache.geode.test.junit.categories.RegionsTest; -import org.apache.geode.test.junit.rules.ServerStarterRule; -import org.apache.geode.test.junit.rules.serializable.SerializableTestName; -import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory; - -@RunWith(Parameterized.class) -@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class) -@Category({RegionsTest.class}) -public class DistributedEventTrackerIntegrationTest { - - @Parameterized.Parameters(name = "possibleDuplicate={0}") - public static Collection<Boolean> booleans() { - return Arrays.asList(true, false); - } - - @Parameterized.Parameter - public boolean possibleDuplicate; - - @Rule - public SerializableTestName testName = new SerializableTestName(); - - @Rule - public ServerStarterRule server = new ServerStarterRule().withNoCacheServer().withLogFile(); - - @Before - public void setUp() throws Exception { - server.startServer(); - } - - @Test - public void testHasSeenEventReplicatedRegion() throws IOException { - // Create the replicated region - DistributedRegion region = (DistributedRegion) server.createRegion(REPLICATE, - testName.getMethodName().substring(0, testName.getMethodName().indexOf('['))); - - // Invoke hasSeenEvent and verify results - invokeHasSeenEventAndVerifyResults(region); - } - - @Test - public void testHasSeenEventPartitionedRegion() throws IOException { - // Create the partitioned region - PartitionedRegion region = (PartitionedRegion) server.createRegion(PARTITION, - testName.getMethodName().substring(0, testName.getMethodName().indexOf('['))); - - // Assign buckets so that the BucketRegions and their EventTrackers are created - PartitionRegionHelper.assignBucketsToPartitions(region); - - // Get a BucketRegion - BucketRegion br = region.getBucketRegion(0); - - // Invoke hasSeenEvent and verify results - invokeHasSeenEventAndVerifyResults(br); - } - - private void invokeHasSeenEventAndVerifyResults(DistributedRegion region) - throws IOException { - byte[] memberId = new byte[0]; - long threadId = 1L; - - // Create an event with a high sequence number - EntryEventImpl event1 = createEvent(region, new EventID(memberId, threadId, 1000L), false); - - // Record the event - region.getEventTracker().recordEvent(event1); - - // Create an event with a lower sequence number and possibleDuplicate set appropriately - EntryEventImpl event2 = - createEvent(region, new EventID(memberId, threadId, 0L), possibleDuplicate); - - // Invoke hasSeenEvent - boolean hasSeenEvent = region.getEventTracker().hasSeenEvent(event2); - - // Assert hasSeenEvent is true - assertThat(hasSeenEvent).isTrue(); - - // Verify the log does or does not contain the message depending on possibleDuplicate - File logFile = ((InternalDistributedSystem) server.getCache().getDistributedSystem()) - .getConfig().getLogFile(); - Optional<String> logLine = Files.lines(Paths.get(logFile.getAbsolutePath())) - .filter(line -> line.contains(EVENT_HAS_PREVIOUSLY_BEEN_SEEN_PREFIX)) - .findFirst(); - assertThat(logLine.isPresent()).isEqualTo(!possibleDuplicate); - - // Verify the statistic is incremented - assertThat(region.getCachePerfStats().getPreviouslySeenEvents()).isEqualTo(1); - } - - private EntryEventImpl createEvent(LocalRegion region, EventID eventId, - boolean possibleDuplicate) { - EntryEventImpl event = EntryEventImpl.create(region, Operation.CREATE, 0, 0, null, true, - region.getCache().getMyId(), false, eventId); - event.setPossibleDuplicate(possibleDuplicate); - - // Set the client context so that the event won't be ignored by the tracker - event.setContext(mock(ClientProxyMembershipID.class)); - return event; - } -} diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegion.java index 64bb2a8..af5ebd0 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegion.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegion.java @@ -1400,10 +1400,6 @@ public class BucketRegion extends DistributedRegion implements Bucket { return redundancy; } - public boolean hasLowRedundancy() { - return redundancy < getBucketAdvisor().getBucketRedundancy(); - } - @Override public boolean isPrimary() { throw new UnsupportedOperationException( diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/CachePerfStats.java b/geode-core/src/main/java/org/apache/geode/internal/cache/CachePerfStats.java index 6221d55..7400442 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/CachePerfStats.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/CachePerfStats.java @@ -166,8 +166,6 @@ public class CachePerfStats { static final int handlingNetsearchesFailedId; @VisibleForTesting static final int handlingNetsearchesFailedTimeId; - @VisibleForTesting - protected static final int previouslySeenEventsId; static { StatisticsTypeFactory f = StatisticsTypeFactoryImpl.singleton(); @@ -356,8 +354,6 @@ public class CachePerfStats { "Total number of times handling a network search initiated by a remote cache failed without success."; final String handlingNetsearchesFailedTimeDesc = "Total time spent handling failed network searches for remote caches."; - final String previouslySeenEventsDesc = - "The number of previously seen events ignored by the event tracker."; type = f.createType("CachePerfStats", "Statistics about GemFire cache performance", new StatisticDescriptor[] { @@ -530,8 +526,7 @@ public class CachePerfStats { f.createLongCounter("handlingNetsearchesFailed", handlingNetsearchesFailedDesc, "operations"), f.createLongCounter("handlingNetsearchesFailedTime", handlingNetsearchesFailedTimeDesc, - "nanoseconds"), - f.createLongCounter("previouslySeenEvents", previouslySeenEventsDesc, "events") + "nanoseconds") }); loadsInProgressId = type.nameToId("loadsInProgress"); @@ -659,8 +654,6 @@ public class CachePerfStats { handlingNetsearchesTimeId = type.nameToId("handlingNetsearchesTime"); handlingNetsearchesFailedId = type.nameToId("handlingNetsearchesFailed"); handlingNetsearchesFailedTimeId = type.nameToId("handlingNetsearchesFailedTime"); - - previouslySeenEventsId = type.nameToId("previouslySeenEvents"); } /** The Statistics object that we delegate most behavior to */ @@ -1530,12 +1523,4 @@ public class CachePerfStats { public long getHandlingNetsearchesFailed() { return stats.getLong(handlingNetsearchesFailedId); } - - public long getPreviouslySeenEvents() { - return stats.getLong(previouslySeenEventsId); - } - - public void incPreviouslySeenEvents() { - stats.incLong(previouslySeenEventsId, 1l); - } } diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java index 7bc893e..e7050e6 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java @@ -280,7 +280,7 @@ public class DistributedRegion extends LocalRegion implements InternalDistribute @Override protected EventTracker createEventTracker() { - EventTracker tracker = new DistributedEventTracker(this); + EventTracker tracker = new DistributedEventTracker(cache, getCancelCriterion(), getName()); tracker.start(); return tracker; } diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java index 35b2cfd..708500b 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java @@ -453,7 +453,6 @@ public class EntryEventImpl implements InternalEntryEvent, InternalCacheEvent, e = EntryEventImpl.create(region, entryOp, entryKey, entryNewValue, event.getCallbackArgument(), false, region.getMyId(), event.isGenerateCallbacks()); } - e.setPossibleDuplicate(event.isPossibleDuplicate()); } else { e = EntryEventImpl.create(region, entryOp, entryKey, entryNewValue, null, false, @@ -480,7 +479,6 @@ public class EntryEventImpl implements InternalEntryEvent, InternalCacheEvent, e = EntryEventImpl.create(region, entryOp, entryKey, null, event.getCallbackArgument(), false, region.getMyId(), event.isGenerateCallbacks()); } - e.setPossibleDuplicate(event.isPossibleDuplicate()); } else { e = EntryEventImpl.create(region, entryOp, entryKey, null, null, false, region.getMyId(), diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java index d5147c8..0842e2b 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java @@ -8806,11 +8806,9 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory, * retried client event, we need to make sure we send the original version tag along with * the event. * @param callbackArg callback argument from client - * @param isRetry whether this is a client retry */ public VersionedObjectList basicBridgePutAll(Map map, Map<Object, VersionTag> retryVersions, - ClientProxyMembershipID memberId, EventID eventId, boolean skipCallbacks, Object callbackArg, - boolean isRetry) + ClientProxyMembershipID memberId, EventID eventId, boolean skipCallbacks, Object callbackArg) throws TimeoutException, CacheWriterException { long startPut = getStatisticsClock().getTime(); @@ -8823,7 +8821,6 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory, try { event.setContext(memberId); - event.setPossibleDuplicate(isRetry); DistributedPutAllOperation putAllOp = new DistributedPutAllOperation(event, map.size(), true); try { VersionedObjectList result = basicPutAll(map, putAllOp, retryVersions); @@ -8845,11 +8842,10 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory, * keys slot will be non-null in this collection. Note that keys and retryVersions are * parallel lists. * @param callbackArg callback argument from client - * @param isRetry whether this is a client retry */ public VersionedObjectList basicBridgeRemoveAll(List<Object> keys, ArrayList<VersionTag> retryVersions, ClientProxyMembershipID memberId, EventID eventId, - Object callbackArg, boolean isRetry) throws TimeoutException, CacheWriterException { + Object callbackArg) throws TimeoutException, CacheWriterException { long startOp = getStatisticsClock().getTime(); @@ -8861,7 +8857,6 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory, try { event.setContext(memberId); - event.setPossibleDuplicate(isRetry); DistributedRemoveAllOperation removeAllOp = new DistributedRemoveAllOperation(event, keys.size(), true); try { @@ -9506,7 +9501,6 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory, if (tagHolder != null) { event.setVersionTag(tagHolder.getVersionTag()); event.setFromServer(tagHolder.isFromServer()); - event.setPossibleDuplicate(tagHolder.isPossibleDuplicate()); } if (generateEventID()) { event.setEventId(new EventID(putallOp.getBaseEvent().getEventId(), offset)); @@ -9543,7 +9537,6 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory, if (tagHolder != null) { event.setVersionTag(tagHolder.getVersionTag()); event.setFromServer(tagHolder.isFromServer()); - event.setPossibleDuplicate(tagHolder.isPossibleDuplicate()); } if (generateEventID()) { event.setEventId(new EventID(op.getBaseEvent().getEventId(), offset)); diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java index cb07780..eb7fed7 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java @@ -10122,8 +10122,4 @@ public class PartitionedRegion extends LocalRegion this.getSystem().handleResourceEvent(ResourceEvent.REGION_CREATE, this); this.regionCreationNotified = true; } - - public boolean areRecoveriesInProgress() { - return prStats.getRecoveriesInProgress() > 0; - } } diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionStats.java b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionStats.java index 01080bb..7196019 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionStats.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionStats.java @@ -991,10 +991,6 @@ public class PartitionedRegionStats { this.stats.incLong(recoveriesCompletedId, 1); } - public long getRecoveriesInProgress() { - return this.stats.getLong(recoveriesInProgressId); - } - public long startBucketCreate(boolean isRebalance) { this.stats.incLong(bucketCreatesInProgressId, 1); if (isRebalance) { diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/RegionPerfStats.java b/geode-core/src/main/java/org/apache/geode/internal/cache/RegionPerfStats.java index 498b246..6e92ce9 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/RegionPerfStats.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/RegionPerfStats.java @@ -593,12 +593,6 @@ class RegionPerfStats extends CachePerfStats implements RegionStats { } } - @Override - public void incPreviouslySeenEvents() { - stats.incLong(previouslySeenEventsId, 1l); - cachePerfStats.incPreviouslySeenEvents(); - } - private static Gauge registerEntriesGauge(InternalRegion region, MeterRegistry meterRegistry) { return Gauge.builder("geode.cache.entries", region::getLocalSize) .description("Current number of entries in the region.") diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/event/DistributedEventTracker.java b/geode-core/src/main/java/org/apache/geode/internal/cache/event/DistributedEventTracker.java index ce24656..3640db8 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/event/DistributedEventTracker.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/event/DistributedEventTracker.java @@ -21,14 +21,13 @@ import java.util.concurrent.ConcurrentMap; import org.apache.logging.log4j.Logger; -import org.apache.geode.annotations.VisibleForTesting; +import org.apache.geode.CancelCriterion; import org.apache.geode.distributed.DistributedMember; import org.apache.geode.distributed.internal.membership.InternalDistributedMember; import org.apache.geode.internal.Assert; -import org.apache.geode.internal.cache.BucketRegion; -import org.apache.geode.internal.cache.DistributedRegion; import org.apache.geode.internal.cache.EntryEventImpl; import org.apache.geode.internal.cache.EventID; +import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.internal.cache.InternalCacheEvent; import org.apache.geode.internal.cache.LocalRegion; import org.apache.geode.internal.cache.ha.ThreadIdentifier; @@ -42,15 +41,6 @@ import org.apache.geode.logging.internal.log4j.api.LogService; public class DistributedEventTracker implements EventTracker { private static final Logger logger = LogService.getLogger(); - @VisibleForTesting - protected static final String EVENT_HAS_PREVIOUSLY_BEEN_SEEN_PREFIX = - "Event has previously been seen "; - - private static final String EVENT_HAS_PREVIOUSLY_BEEN_SEEN_PARAMETERS = - "for region={}; operation={}; key={}; eventId={}; highestSequenceNumberSeen={}"; - - private static final String EVENT_HAS_PREVIOUSLY_BEEN_SEEN = - EVENT_HAS_PREVIOUSLY_BEEN_SEEN_PREFIX + EVENT_HAS_PREVIOUSLY_BEEN_SEEN_PARAMETERS; /** * a mapping of originator to the last event applied to this cache * @@ -89,9 +79,9 @@ public class DistributedEventTracker implements EventTracker { private volatile InternalDistributedMember initialImageProvider; /** - * The region associated with this tracker + * The cache associated with this tracker */ - private final DistributedRegion region; + private InternalCache cache; /** * The name of this tracker @@ -112,25 +102,28 @@ public class DistributedEventTracker implements EventTracker { /** * Create an event tracker * - * @param region the region + * @param cache the cache of the region to associate with this tracker + * @param stopper the CancelCriterion for the region + * @param regionName name of the region */ - public DistributedEventTracker(DistributedRegion region) { - this.region = region; - name = "Event Tracker for " + region.getName(); - initializationLatch = new StoppableCountDownLatch(region.getCancelCriterion(), 1); + public DistributedEventTracker(InternalCache cache, CancelCriterion stopper, String regionName) { + + this.cache = cache; + this.name = "Event Tracker for " + regionName; + this.initializationLatch = new StoppableCountDownLatch(stopper, 1); } @Override public void start() { - if (region.getCache().getEventTrackerTask() != null) { - region.getCache().getEventTrackerTask().addTracker(this); + if (cache.getEventTrackerTask() != null) { + cache.getEventTrackerTask().addTracker(this); } } @Override public void stop() { - if (region.getCache().getEventTrackerTask() != null) { - region.getCache().getEventTrackerTask().removeTracker(this); + if (cache.getEventTrackerTask() != null) { + cache.getEventTrackerTask().removeTracker(this); } } @@ -363,58 +356,22 @@ public class DistributedEventTracker implements EventTracker { if (evh.isRemoved() || evh.getLastSequenceNumber() < eventID.getSequenceID()) { return false; } - 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()); + // 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()); } // 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; - if (event != null && ((EntryEventImpl) event).isPossibleDuplicate()) { - // Ignore the previously seen event if it is a possible duplicate - message = "possible duplicate"; - shouldLogSeenEvent = false; - } else if (region instanceof BucketRegion) { - BucketRegion br = (BucketRegion) region; - if (br.hasLowRedundancy()) { - // Ignore the previously seen event while the bucket has low redundancy - message = "low redundancy"; - shouldLogSeenEvent = false; - } else if (br.getPartitionedRegion().areRecoveriesInProgress()) { - // Ignore the previously seen event while recoveries are in progress - message = "recoveries in progress"; - shouldLogSeenEvent = false; - } - } - if (!shouldLogSeenEvent && logger.isDebugEnabled()) { - if (event == null) { - logger.debug("Ignoring previously seen event due to {}", message); - } else { - logger.debug( - "Ignoring previously seen event due to {} for region={}; operation={}; key={}; eventId={}; highestSequenceNumberSeen={}", - message, region.getName(), ((EntryEventImpl) event).getKey(), event.getOperation(), - event.getEventId().expensiveToString(), evh.getLastSequenceNumber()); - } - } - return shouldLogSeenEvent; - } - private EventSequenceNumberHolder getSequenceHolderForEvent(EventID eventID) { ThreadIdentifier membershipID = createThreadIDFromEvent(eventID); return recordedEvents.get(membershipID); diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/PutAll80.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/PutAll80.java index e6a193e..e6d0a4c 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/PutAll80.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/PutAll80.java @@ -261,7 +261,7 @@ public class PutAll80 extends BaseCommand { response = region.basicBridgePutAll(map, uncheckedCast(retryVersions), serverConnection.getProxyID(), - eventId, skipCallbacks, callbackArg, clientMessage.isRetry()); + eventId, skipCallbacks, callbackArg); if (!region.getConcurrencyChecksEnabled() || clientIsEmpty || !clientHasCCEnabled) { // the client only needs this if versioning is being used and the client // has storage diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/RemoveAll.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/RemoveAll.java index 15dd3ff..c4b74a3 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/RemoveAll.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/RemoveAll.java @@ -198,7 +198,7 @@ public class RemoveAll extends BaseCommand { response = region.basicBridgeRemoveAll(keys, uncheckedCast(retryVersions), serverConnection.getProxyID(), - eventId, callbackArg, clientMessage.isRetry()); + eventId, callbackArg); if (!region.getConcurrencyChecksEnabled() || clientIsEmpty || !clientHasCCEnabled) { // the client only needs this if versioning is being used and the client // has storage diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/CachePerfStatsTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/CachePerfStatsTest.java index f5dcd8e..673e7fe 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/CachePerfStatsTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/CachePerfStatsTest.java @@ -43,7 +43,6 @@ import static org.apache.geode.internal.cache.CachePerfStats.loadsCompletedId; import static org.apache.geode.internal.cache.CachePerfStats.missesId; import static org.apache.geode.internal.cache.CachePerfStats.netloadsCompletedId; import static org.apache.geode.internal.cache.CachePerfStats.netsearchesCompletedId; -import static org.apache.geode.internal.cache.CachePerfStats.previouslySeenEventsId; import static org.apache.geode.internal.cache.CachePerfStats.putAllsId; import static org.apache.geode.internal.cache.CachePerfStats.putTimeId; import static org.apache.geode.internal.cache.CachePerfStats.putsId; @@ -1242,11 +1241,4 @@ public class CachePerfStatsTest { assertThat(statistics.getLong(handlingNetsearchesInProgressId)).isZero(); } - - @Test - public void incPreviouslySeenEventsIncrementsPreviouslySeenEvents() { - cachePerfStats.incPreviouslySeenEvents(); - - assertThat(statistics.getLong(previouslySeenEventsId)).isEqualTo(1L); - } } diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RegionPerfStatsTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/RegionPerfStatsTest.java index 017e4da..97e6b10 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/RegionPerfStatsTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/RegionPerfStatsTest.java @@ -147,13 +147,6 @@ public class RegionPerfStatsTest { } @Test - public void incPreviouslySeenEvents_incrementsCachePerfStatsPreviouslySeenEvents() { - regionPerfStats.incPreviouslySeenEvents(); - - verify(cachePerfStats).incPreviouslySeenEvents(); - } - - @Test public void entryCountGaugeFetchesValueFromRegionLocalSize() { when(region.getLocalSize()).thenReturn(3); diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/event/DistributedEventTrackerTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/event/DistributedEventTrackerTest.java index def4594..21b12a0 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/event/DistributedEventTrackerTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/event/DistributedEventTrackerTest.java @@ -38,12 +38,11 @@ import org.apache.geode.cache.RegionAttributes; import org.apache.geode.distributed.DistributedMember; import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.membership.InternalDistributedMember; -import org.apache.geode.internal.cache.CachePerfStats; -import org.apache.geode.internal.cache.DistributedRegion; import org.apache.geode.internal.cache.EntryEventImpl; import org.apache.geode.internal.cache.EventID; import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.internal.cache.InternalCacheEvent; +import org.apache.geode.internal.cache.LocalRegion; import org.apache.geode.internal.cache.ha.ThreadIdentifier; import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID; import org.apache.geode.internal.cache.versions.VersionTag; @@ -51,21 +50,19 @@ import org.apache.geode.internal.cache.versions.VersionTag; public class DistributedEventTrackerTest { - private DistributedRegion region; + private LocalRegion region; private DistributedEventTracker eventTracker; private ClientProxyMembershipID memberId; private DistributedMember member; @Before public void setup() { - region = mock(DistributedRegion.class); + region = mock(LocalRegion.class); RegionAttributes<?, ?> regionAttributes = mock(RegionAttributes.class); memberId = mock(ClientProxyMembershipID.class); when(region.getAttributes()).thenReturn(regionAttributes); when(regionAttributes.getDataPolicy()).thenReturn(mock(DataPolicy.class)); when(region.getConcurrencyChecksEnabled()).thenReturn(true); - when(region.getCancelCriterion()).thenReturn(mock(CancelCriterion.class)); - when(region.getCachePerfStats()).thenReturn(mock(CachePerfStats.class)); InternalCache cache = mock(InternalCache.class); InternalDistributedSystem ids = mock(InternalDistributedSystem.class); @@ -74,7 +71,8 @@ public class DistributedEventTrackerTest { when(ids.getOffHeapStore()).thenReturn(null); member = mock(DistributedMember.class); - eventTracker = new DistributedEventTracker(region); + eventTracker = new DistributedEventTracker(region.getCache(), mock(CancelCriterion.class), + region.getName()); } @Test @@ -133,7 +131,8 @@ public class DistributedEventTrackerTest { public void returnsCorrectNameOfCache() { String testName = "testing"; when(region.getName()).thenReturn(testName); - eventTracker = new DistributedEventTracker(region); + eventTracker = new DistributedEventTracker(region.getCache(), mock(CancelCriterion.class), + region.getName()); assertEquals("Event Tracker for " + testName, eventTracker.getName()); } @@ -151,7 +150,8 @@ public class DistributedEventTrackerTest { InternalCache cache = mock(InternalCache.class); when(region.getCache()).thenReturn(cache); when(cache.getEventTrackerTask()).thenReturn(task); - eventTracker = new DistributedEventTracker(region); + eventTracker = new DistributedEventTracker(region.getCache(), mock(CancelCriterion.class), + region.getName()); eventTracker.start(); verify(task, times(1)).addTracker(eventTracker); eventTracker.stop(); diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/event/EventTrackerExpiryTaskTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/event/EventTrackerExpiryTaskTest.java index 2c7a52d..eeaebaf 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/event/EventTrackerExpiryTaskTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/event/EventTrackerExpiryTaskTest.java @@ -16,13 +16,12 @@ package org.apache.geode.internal.cache.event; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.apache.geode.CancelCriterion; -import org.apache.geode.internal.cache.DistributedRegion; +import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.internal.cache.ha.ThreadIdentifier; public class EventTrackerExpiryTaskTest { @@ -86,8 +85,7 @@ public class EventTrackerExpiryTaskTest { } private DistributedEventTracker constructTestTracker() { - DistributedRegion region = mock(DistributedRegion.class); - when(region.getCancelCriterion()).thenReturn(mock(CancelCriterion.class)); - return new DistributedEventTracker(region); + return new DistributedEventTracker(mock(InternalCache.class), mock(CancelCriterion.class), + "test region"); } } diff --git a/geode-docs/reference/statistics_list.html.md.erb b/geode-docs/reference/statistics_list.html.md.erb index 699c392..0aabb39 100644 --- a/geode-docs/reference/statistics_list.html.md.erb +++ b/geode-docs/reference/statistics_list.html.md.erb @@ -131,7 +131,6 @@ The primary statistics are: | `partitionedRegions` | The current number of partitioned regions in the cache. [...] | `postCompressedBytes` | Total number of bytes after compressing. [...] | `preCompressedBytes` | Total number of bytes before compressing. [...] -| `previouslySeenEvents` | The number of previously seen events ignored by the event tracker. [...] | `putAlls` | The total number of times a map is added or replaced in this cache as a result of a local operation. Note, this only counts putAlls done explicitly on this cache; it does not count updates pushed from other caches. [...] | `putallTime` | Total time spent replacing a map in this cache as a result of a local operation. This includes synchronizing on the map, invoking cache callbacks, sending messages to other caches and waiting for responses (if required). [...] | `puts` | The total number of times an entry is added or replaced in this cache as a result of a local operation (put(), create(), or get() which results in load, netsearch, or netloading a value). Note, this only counts puts done explicitly on this cache; it does not count updates pushed from other caches. [...]