You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2015/09/10 01:59:05 UTC
[22/50] [abbrv] incubator-geode git commit: GEODE-229: Fixed javadoc
for DiskStoreFactory.setCompactionThreshold
GEODE-229: Fixed javadoc for DiskStoreFactory.setCompactionThreshold
The javadocs and the behavior of the code were backwards. The code
compacts when the live data gets below the threshold. I changed the
javadocs to avoid screwing up someone who was relied on the old
behavior.
Adding a unit test of this property.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/936065f4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/936065f4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/936065f4
Branch: refs/heads/feature/GEODE-12
Commit: 936065f4194f5df97d83b26ca029e66bb69a8d15
Parents: bbc2a5f
Author: Dan Smith <up...@apache.org>
Authored: Tue Aug 18 17:54:56 2015 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Wed Aug 19 16:35:27 2015 -0700
----------------------------------------------------------------------
.../gemfire/cache/DiskStoreFactory.java | 15 ++++++----
.../internal/cache/DiskRegionJUnitTest.java | 30 ++++++++++++++++++++
2 files changed, 39 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/936065f4/gemfire-core/src/main/java/com/gemstone/gemfire/cache/DiskStoreFactory.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/cache/DiskStoreFactory.java b/gemfire-core/src/main/java/com/gemstone/gemfire/cache/DiskStoreFactory.java
index ab67c75..296fb8a 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/cache/DiskStoreFactory.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/cache/DiskStoreFactory.java
@@ -111,13 +111,16 @@ public interface DiskStoreFactory
public DiskStoreFactory setAutoCompact(boolean isAutoCompact);
/**
- * Sets the threshold at which an oplog will become compactable. Until it reaches
- * this threshold the oplog will not be compacted.
- * The threshold is a percentage in the range 0..100.
- * When the amount of garbage in an oplog exceeds this percentage then when a compaction
- * is done this garbage will be cleaned up freeing up disk space. Garbage is created by
+ * Sets the threshold at which an oplog will become compactable. Until it
+ * reaches this threshold the oplog will not be compacted. The threshold is a
+ * percentage in the range 0..100. When the amount of live data in an oplog
+ * becomes less than this percentage then when a compaction is done this
+ * garbage will be cleaned up freeing up disk space. Garbage is created by
* entry destroys, entry updates, and region destroys.
- * @param compactionThreshold the threshold percentage at which an oplog is compactable
+ *
+ * @param compactionThreshold
+ * percentage of remaining live data in the oplog at which an oplog
+ * is compactable
* @return a reference to <code>this</code>
*/
public DiskStoreFactory setCompactionThreshold(int compactionThreshold);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/936065f4/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/DiskRegionJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/DiskRegionJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/DiskRegionJUnitTest.java
index bfc832a..9f85b6f 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/DiskRegionJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/DiskRegionJUnitTest.java
@@ -2993,6 +2993,36 @@ public class DiskRegionJUnitTest extends DiskRegionTestingBase
boolean compacted = ((LocalRegion)region).getDiskStore().forceCompaction();
assertEquals(true, compacted);
}
+
+ /**
+ * Confirm that forceCompaction waits for the compaction to finish
+ */
+ @Test
+ public void testNonDefaultCompaction() {
+ DiskRegionProperties props = new DiskRegionProperties();
+ props.setRegionName("testForceCompactionDoesRoll");
+ props.setRolling(false);
+ props.setDiskDirs(dirs);
+ props.setAllowForceCompaction(true);
+ props.setPersistBackup(true);
+ props.setCompactionThreshold(90);
+ region = DiskRegionHelperFactory.getSyncPersistOnlyRegion(cache, props, Scope.LOCAL);
+ DiskRegion dr = ((LocalRegion)region).getDiskRegion();
+ logWriter.info("putting key1");
+ region.put("key1", "value1");
+ logWriter.info("putting key2");
+ region.put("key2", "value2");
+ //Only remove 1 of the entries. This wouldn't trigger compaction with
+ //the default threshold, since there are two entries.
+ logWriter.info("removing key1");
+ region.remove("key1");
+ // now that it is compactable the following forceCompaction should
+ // go ahead and do a roll and compact it.
+ Oplog oplog = dr.testHook_getChild();
+ boolean compacted = ((LocalRegion)region).getDiskStore().forceCompaction();
+ assertEquals(true, oplog.testConfirmCompacted());
+ assertEquals(true, compacted);
+ }
/**
* Confirm that forceCompaction waits for the compaction to finish