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