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 mr...@apache.org on 2019/03/28 10:10:37 UTC

svn commit: r1856465 - in /jackrabbit/oak/trunk/oak-store-document/src: main/java/org/apache/jackrabbit/oak/plugins/document/ test/java/org/apache/jackrabbit/oak/plugins/document/ test/java/org/apache/jackrabbit/oak/plugins/document/bundlor/

Author: mreutegg
Date: Thu Mar 28 10:10:37 2019
New Revision: 1856465

URL: http://svn.apache.org/viewvc?rev=1856465&view=rev
Log:
OAK-8176: Inaccurate calculation of RevisionVector memory

Modified:
    jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionVector.java
    jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStateTest.java
    jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/bundlor/DocumentBundlingTest.java

Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionVector.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionVector.java?rev=1856465&r1=1856464&r2=1856465&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionVector.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionVector.java Thu Mar 28 10:10:37 2019
@@ -429,8 +429,9 @@ public final class RevisionVector implem
 
     @Override
     public int getMemory() {
-        long size = 32 // shallow size
-                      + (long)revisions.length * (Revision.SHALLOW_MEMORY_USAGE + 4);
+        long size = 24 // shallow size
+                + revisionArrayMemory()
+                + revisions.length * Revision.SHALLOW_MEMORY_USAGE;
         if (size > Integer.MAX_VALUE) {
             log.debug("Estimated memory footprint larger than Integer.MAX_VALUE: {}.", size);
             size = Integer.MAX_VALUE;
@@ -516,6 +517,10 @@ public final class RevisionVector implem
         return it.hasNext() ? it.peek() : null;
     }
 
+    private long revisionArrayMemory() {
+        return 16 + ((revisions.length + 1 >> 1) << 3);
+    }
+
     private static void checkUniqueClusterIds(Revision[] revisions)
             throws IllegalArgumentException {
         if (revisions.length < 2) {

Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStateTest.java?rev=1856465&r1=1856464&r2=1856465&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStateTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStateTest.java Thu Mar 28 10:10:37 2019
@@ -36,7 +36,7 @@ public class DocumentNodeStateTest {
         DocumentNodeStore store = builderProvider.newBuilder().getNodeStore();
         RevisionVector rv = new RevisionVector(Revision.newRevision(1));
         DocumentNodeState state = new DocumentNodeState(store, "/foo", rv);
-        assertEquals(164, state.getMemory());
+        assertEquals(176, state.getMemory());
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/bundlor/DocumentBundlingTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/bundlor/DocumentBundlingTest.java?rev=1856465&r1=1856464&r2=1856465&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/bundlor/DocumentBundlingTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/bundlor/DocumentBundlingTest.java Thu Mar 28 10:10:37 2019
@@ -186,7 +186,7 @@ public class DocumentBundlingTest {
         int nonBundledMem = nonBundledFile.getMemory() + nonBundledContent.getMemory();
         int bundledMem = bundledFile.getMemory();
 
-        assertEquals(1386, bundledMem);
+        assertEquals(1410, bundledMem);
         assertThat(bundledMem, is(greaterThan(nonBundledMem)));
     }