You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2015/06/01 12:00:28 UTC

svn commit: r1682855 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment: CompactionMap.java file/FileStore.java

Author: mduerig
Date: Mon Jun  1 10:00:28 2015
New Revision: 1682855

URL: http://svn.apache.org/r1682855
Log:
OAK-2938: Estimation of required memory for compaction is off
Use last weight as estimate for the required heap size

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java?rev=1682855&r1=1682854&r2=1682855&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java Mon Jun  1 10:00:28 2015
@@ -85,7 +85,6 @@ public class CompactionMap {
     private long[] afterMsbs = new long[0];
     private long[] afterLsbs = new long[0];
 
-    private long prevWeight;
     private CompactionMap prev;
 
     CompactionMap(int compressInterval, SegmentTracker tracker) {
@@ -433,7 +432,6 @@ public class CompactionMap {
      */
     void merge(CompactionMap prev) {
         this.prev = prev;
-        this.prevWeight = prev.getEstimatedWeight();
     }
 
     public String getCompactionStats() {
@@ -485,8 +483,12 @@ public class CompactionMap {
 
     }
 
-    public long getLastMergeWeight() {
-        return this.prevWeight;
+    /**
+     * The weight of the last generation of the compaction map.
+     * @return  Estimated weight of the last generation of the compaction map.
+     */
+    public long getLastWeight() {
+        return getEstimatedWeight(this);
     }
 
     private static long getEstimatedWeight(CompactionMap cm) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1682855&r1=1682854&r2=1682855&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Mon Jun  1 10:00:28 2015
@@ -434,7 +434,7 @@ public class FileStore implements Segmen
         long avail = runtime.totalMemory() - runtime.freeMemory();
         long delta = 0;
         if (compactionStrategy.getCompactionMap() != null) {
-            delta = compactionStrategy.getCompactionMap().getLastMergeWeight();
+            delta = compactionStrategy.getCompactionMap().getLastWeight();
         }
         long needed = delta * compactionStrategy.getMemoryThreshold();
         if (needed >= avail) {