You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/05/10 21:08:21 UTC
[4/9] incubator-geode git commit: GEODE-92: PR with entry eviction 1
leaves 3 entries in memory with async overflow
GEODE-92: PR with entry eviction 1 leaves 3 entries in memory with async overflow
Found that invoking lruUpdateCallback multiple times with in a single get
could mess up entry eviction state. So disabled lru callback and invoked
at the end of the operation.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f4b06438
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f4b06438
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f4b06438
Branch: refs/heads/feature/GEODE-951
Commit: f4b0643829b00d0ba9b0852fdd3a679812395545
Parents: 44c2f39
Author: Sai Boorlagadda <sb...@pivotal.io>
Authored: Tue Apr 26 13:31:25 2016 -0700
Committer: Sai Boorlagadda <sb...@pivotal.io>
Committed: Tue May 10 08:33:09 2016 -0700
----------------------------------------------------------------------
.../gemfire/internal/cache/AbstractLRURegionMap.java | 9 +++------
.../gemstone/gemfire/internal/cache/LocalRegion.java | 6 ++++++
.../cache/PartitionedRegionStatsJUnitTest.java | 14 ++------------
3 files changed, 11 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f4b06438/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractLRURegionMap.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractLRURegionMap.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractLRURegionMap.java
index 2cc7a55..14c431d 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractLRURegionMap.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractLRURegionMap.java
@@ -197,17 +197,14 @@ public abstract class AbstractLRURegionMap extends AbstractRegionMap {
int delta = le.updateEntrySize(_getCCHelper(), new CDValueWrapper(v));
if (delta != 0) {
result = true;
- boolean needToDisableCallbacks = !getCallbackDisabled();
- if (needToDisableCallbacks) {
- setCallbackDisabled(true);
- }
+ boolean disabledLURCallbacks = disableLruUpdateCallback();
// by making sure that callbacks are disabled when we call
// setDelta; it ensures that the setDelta will just inc the delta
// value and not call lruUpdateCallback which we call in
// finishChangeValueForm
setDelta(delta);
- if (needToDisableCallbacks) {
- setCallbackDisabled(false);
+ if (disabledLURCallbacks) {
+ enableLruUpdateCallback();
}
}
// fix for bug 42090
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f4b06438/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
index 3ad294c..e9f5819 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
@@ -1298,6 +1298,7 @@ public class LocalRegion extends AbstractRegion
@Retained
protected final Object getDeserialized(RegionEntry re, boolean updateStats, boolean disableCopyOnRead, boolean preferCD, boolean retainResult) {
assert !retainResult || preferCD;
+ boolean disabledLRUCallback = this.entries.disableLruUpdateCallback();
try {
@Retained Object v = null;
try {
@@ -1340,6 +1341,11 @@ public class LocalRegion extends AbstractRegion
IllegalArgumentException iae = new IllegalArgumentException(LocalizedStrings.DONT_RELEASE.toLocalizedString("Error while deserializing value for key="+re.getKey()));
iae.initCause(i);
throw iae;
+ } finally {
+ if(disabledLRUCallback) {
+ this.entries.enableLruUpdateCallback();
+ this.entries.lruUpdateCallback();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f4b06438/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionStatsJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionStatsJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionStatsJUnitTest.java
index 167b89b..1a3277c 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionStatsJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionStatsJUnitTest.java
@@ -436,11 +436,7 @@ public class PartitionedRegionStatsJUnitTest
pr.getDiskStore().flush();
- //Workaround for GEODE-92. We are leaving more than 1 entry in memory. To
- //validate that stats, let's confirm the stats match what is actually in
- //memory
- //int entriesInMem = 1;
- int entriesInMem = countEntriesInMem(pr);
+ int entriesInMem = 1;
assertEquals(singleEntryMemSize * entriesInMem, stats.getLong("dataStoreBytesInUse"));
assertEquals(numEntries , stats.getInt("dataStoreEntryCount"));
@@ -475,13 +471,7 @@ public class PartitionedRegionStatsJUnitTest
System.out.println("----Done with random operations");
numEntries = pr.entryCount();
-
- //Workaround for GEODE-92. We are leaving more than 1 entry in memory. To
- //validate that stats, let's confirm the stats match what is actually in
- //memory
- //entriesInMem = 1;
- entriesInMem = countEntriesInMem(pr);
-
+
assertEquals(singleEntryMemSize * entriesInMem, stats.getLong("dataStoreBytesInUse"));
assertEquals(numEntries , stats.getInt("dataStoreEntryCount"));
assertEquals((numEntries - entriesInMem) * entryOverflowSize, diskStats.getNumOverflowBytesOnDisk());